summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/Android.derived.jscbindings.mk1
-rw-r--r--WebCore/Android.derived.v8bindings.mk1
-rw-r--r--WebCore/Android.jscbindings.mk3
-rw-r--r--WebCore/Android.mk4
-rw-r--r--WebCore/Android.v8bindings.mk9
-rw-r--r--WebCore/CMakeLists.txt42
-rw-r--r--WebCore/CMakeListsEfl.txt1
-rw-r--r--WebCore/ChangeLog5851
-rw-r--r--WebCore/Configurations/FeatureDefines.xcconfig5
-rw-r--r--WebCore/DerivedSources.cpp9
-rw-r--r--WebCore/DerivedSources.make178
-rw-r--r--WebCore/English.lproj/localizedStrings.jsbin41044 -> 42592 bytes
-rw-r--r--WebCore/GNUmakefile.am100
-rw-r--r--WebCore/WebCore.3DRendering.exp1
-rw-r--r--WebCore/WebCore.AcceleratedCompositing.exp2
-rw-r--r--WebCore/WebCore.ClientBasedGeolocation.exp2
-rw-r--r--WebCore/WebCore.ContextMenus.exp5
-rw-r--r--WebCore/WebCore.DashboardSupport.exp3
-rw-r--r--WebCore/WebCore.DragSupport.exp9
-rw-r--r--WebCore/WebCore.Geolocation.exp2
-rw-r--r--WebCore/WebCore.Inspector.exp30
-rw-r--r--WebCore/WebCore.JNI.exp10
-rw-r--r--WebCore/WebCore.NPAPI.exp28
-rw-r--r--WebCore/WebCore.OrientationEvents.exp1
-rw-r--r--WebCore/WebCore.PluginHostProcess.exp28
-rw-r--r--WebCore/WebCore.ProtectionSpaceAuthCallback.exp2
-rw-r--r--WebCore/WebCore.SVG.Animation.exp2
-rw-r--r--WebCore/WebCore.SVG.Filters.exp25
-rw-r--r--WebCore/WebCore.SVG.ForeignObject.exp1
-rw-r--r--WebCore/WebCore.SVG.exp95
-rw-r--r--WebCore/WebCore.Tiger.exp13
-rw-r--r--WebCore/WebCore.Video.exp18
-rw-r--r--WebCore/WebCore.VideoProxy.exp4
-rw-r--r--WebCore/WebCore.exp.in (renamed from WebCore/WebCore.base.exp)385
-rw-r--r--WebCore/WebCore.gyp/WebCore.gyp63
-rw-r--r--WebCore/WebCore.gyp/scripts/rule_binding.py10
-rw-r--r--WebCore/WebCore.gypi60
-rw-r--r--WebCore/WebCore.pri74
-rw-r--r--WebCore/WebCore.pro66
-rw-r--r--WebCore/WebCore.vcproj/WebCore.vcproj306
-rw-r--r--WebCore/WebCore.vcproj/WebCoreCommon.vsprops2
-rw-r--r--WebCore/WebCore.xcodeproj/project.pbxproj1097
-rw-r--r--WebCore/accessibility/AXObjectCache.h1
-rw-r--r--WebCore/accessibility/AccessibilityListBox.h3
-rw-r--r--WebCore/accessibility/AccessibilityMenuList.h1
-rw-r--r--WebCore/accessibility/AccessibilityRenderObject.cpp75
-rw-r--r--WebCore/accessibility/AccessibilityTable.cpp18
-rw-r--r--WebCore/accessibility/mac/AccessibilityObjectWrapper.h2
-rw-r--r--WebCore/accessibility/mac/AccessibilityObjectWrapper.mm3
-rw-r--r--WebCore/bindings/ScriptControllerBase.h48
-rw-r--r--WebCore/bindings/generic/RuntimeEnabledFeatures.cpp5
-rw-r--r--WebCore/bindings/generic/RuntimeEnabledFeatures.h1
-rw-r--r--WebCore/bindings/gobject/GObjectEventListener.h1
-rw-r--r--WebCore/bindings/js/IDBBindingUtilities.cpp4
-rw-r--r--WebCore/bindings/js/IDBBindingUtilities.h6
-rw-r--r--WebCore/bindings/js/JSBindingsAllInOne.cpp6
-rw-r--r--WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp (renamed from WebCore/bindings/js/JSMimeTypeArrayCustom.cpp)12
-rw-r--r--WebCore/bindings/js/JSDOMPluginArrayCustom.cpp (renamed from WebCore/bindings/js/JSPluginArrayCustom.cpp)12
-rw-r--r--WebCore/bindings/js/JSDOMPluginCustom.cpp (renamed from WebCore/bindings/js/JSPluginCustom.cpp)12
-rw-r--r--WebCore/bindings/js/JSIDBAnyCustom.cpp7
-rw-r--r--WebCore/bindings/js/JSSharedWorkerCustom.cpp5
-rw-r--r--WebCore/bindings/js/ScriptCallStack.cpp2
-rw-r--r--WebCore/bindings/js/ScriptCallStack.h5
-rw-r--r--WebCore/bindings/js/ScriptController.h12
-rw-r--r--WebCore/bindings/js/ScriptDebugServer.cpp6
-rw-r--r--WebCore/bindings/js/ScriptEventListener.cpp8
-rw-r--r--WebCore/bindings/js/ScriptEventListener.h4
-rw-r--r--WebCore/bindings/scripts/CodeGenerator.pm18
-rw-r--r--WebCore/bindings/scripts/CodeGeneratorJS.pm7
-rw-r--r--WebCore/bindings/scripts/CodeGeneratorV8.pm10
-rw-r--r--WebCore/bindings/scripts/IDLParser.pm2
-rw-r--r--WebCore/bindings/scripts/InFilesParser.pm4
-rwxr-xr-xWebCore/bindings/scripts/generate-bindings.pl12
-rw-r--r--WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp38
-rw-r--r--WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h8
-rw-r--r--WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp97
-rw-r--r--WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h16
-rw-r--r--WebCore/bindings/scripts/test/JS/JSTestObj.cpp44
-rw-r--r--WebCore/bindings/scripts/test/JS/JSTestObj.h8
-rw-r--r--WebCore/bindings/scripts/test/ObjC/DOMTestObj.h8
-rw-r--r--WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm30
-rw-r--r--WebCore/bindings/scripts/test/TestObj.idl7
-rw-r--r--WebCore/bindings/scripts/test/V8/V8TestObj.cpp50
-rw-r--r--WebCore/bindings/v8/IDBBindingUtilities.cpp4
-rw-r--r--WebCore/bindings/v8/IDBBindingUtilities.h6
-rw-r--r--WebCore/bindings/v8/ScriptCallStack.cpp26
-rw-r--r--WebCore/bindings/v8/ScriptCallStack.h5
-rw-r--r--WebCore/bindings/v8/ScriptController.cpp16
-rw-r--r--WebCore/bindings/v8/ScriptController.h12
-rw-r--r--WebCore/bindings/v8/ScriptDebugServer.cpp4
-rw-r--r--WebCore/bindings/v8/ScriptEventListener.cpp16
-rw-r--r--WebCore/bindings/v8/ScriptEventListener.h6
-rw-r--r--WebCore/bindings/v8/ScriptSourceCode.h8
-rw-r--r--WebCore/bindings/v8/V8AbstractEventListener.h4
-rw-r--r--WebCore/bindings/v8/V8DOMWrapper.cpp3
-rw-r--r--WebCore/bindings/v8/V8NodeFilterCondition.h9
-rw-r--r--WebCore/bindings/v8/V8Utilities.cpp25
-rw-r--r--WebCore/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp3
-rw-r--r--WebCore/bindings/v8/custom/V8HTMLCollectionCustom.cpp3
-rw-r--r--WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp14
-rw-r--r--WebCore/bindings/v8/custom/V8HTMLFormElementCustom.cpp3
-rw-r--r--WebCore/bindings/v8/custom/V8HTMLSelectElementCustom.cpp3
-rw-r--r--WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp6
-rw-r--r--WebCore/bindings/v8/custom/V8NamedNodesCollection.h11
-rw-r--r--WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp24
-rw-r--r--WebCore/bridge/jni/v8/JavaInstanceV8.cpp3
-rw-r--r--WebCore/bridge/qt/qt_instance.cpp28
-rw-r--r--WebCore/css/CSSComputedStyleDeclaration.cpp14
-rw-r--r--WebCore/css/CSSComputedStyleDeclaration.h5
-rw-r--r--WebCore/css/CSSFontFaceSource.cpp8
-rw-r--r--WebCore/css/CSSFontFaceSource.h9
-rw-r--r--WebCore/css/CSSHelper.cpp4
-rw-r--r--WebCore/css/CSSImportRule.idl2
-rw-r--r--WebCore/css/CSSMediaRule.idl2
-rw-r--r--WebCore/css/CSSParser.cpp73
-rw-r--r--WebCore/css/CSSParser.h6
-rw-r--r--WebCore/css/CSSPrimitiveValueMappings.h4
-rw-r--r--WebCore/css/CSSProperty.cpp16
-rw-r--r--WebCore/css/CSSProperty.h3
-rw-r--r--WebCore/css/CSSPropertyNames.in4
-rw-r--r--WebCore/css/CSSSegmentedFontFace.cpp6
-rw-r--r--WebCore/css/CSSSelector.cpp7
-rw-r--r--WebCore/css/CSSSelector.h9
-rw-r--r--WebCore/css/CSSStyleSelector.cpp14
-rw-r--r--WebCore/css/CSSStyleSheet.cpp7
-rw-r--r--WebCore/css/CSSStyleSheet.h2
-rw-r--r--WebCore/css/CSSStyleSheet.idl2
-rw-r--r--WebCore/css/CSSValueKeywords.in1
-rw-r--r--WebCore/css/CSSVariablesRule.idl2
-rw-r--r--WebCore/css/MediaQuery.cpp3
-rw-r--r--WebCore/css/MediaQuery.h6
-rw-r--r--WebCore/css/StyleMedia.h4
-rw-r--r--WebCore/css/mathml.css13
-rw-r--r--WebCore/css/mediaControls.css7
-rw-r--r--WebCore/css/mediaControlsQuickTime.css45
-rw-r--r--WebCore/css/themeWin.css3
-rw-r--r--WebCore/dom/Attribute.h5
-rw-r--r--WebCore/dom/BeforeLoadEvent.h1
-rw-r--r--WebCore/dom/CanvasSurface.h111
-rw-r--r--WebCore/dom/CharacterData.cpp10
-rw-r--r--WebCore/dom/CharacterData.h3
-rw-r--r--WebCore/dom/ContainerNode.cpp5
-rw-r--r--WebCore/dom/ContainerNode.h4
-rw-r--r--WebCore/dom/CustomEvent.h1
-rw-r--r--WebCore/dom/DOMStringMap.h1
-rw-r--r--WebCore/dom/DeviceOrientationController.cpp (renamed from WebCore/dom/DeviceOrientation.cpp)6
-rw-r--r--WebCore/dom/DeviceOrientationController.h (renamed from WebCore/dom/DeviceOrientation.h)10
-rw-r--r--WebCore/dom/DeviceOrientationEvent.h1
-rw-r--r--WebCore/dom/Document.cpp11
-rw-r--r--WebCore/dom/Document.h3
-rw-r--r--WebCore/dom/Element.cpp86
-rw-r--r--WebCore/dom/Element.h25
-rw-r--r--WebCore/dom/EventListener.h1
-rw-r--r--WebCore/dom/MappedAttributeEntry.h4
-rw-r--r--WebCore/dom/MessagePort.h2
-rw-r--r--WebCore/dom/Node.cpp50
-rw-r--r--WebCore/dom/NodeFilter.h1
-rw-r--r--WebCore/dom/NodeRareData.h2
-rw-r--r--WebCore/dom/RegisteredEventListener.h2
-rw-r--r--WebCore/dom/SelectorNodeList.cpp1
-rw-r--r--WebCore/dom/SelectorNodeList.h4
-rw-r--r--WebCore/dom/SpaceSplitString.h7
-rw-r--r--WebCore/dom/StyleElement.cpp12
-rw-r--r--WebCore/dom/StyleElement.h5
-rw-r--r--WebCore/dom/StyledElement.cpp37
-rw-r--r--WebCore/dom/StyledElement.h20
-rw-r--r--WebCore/dom/Traversal.h1
-rwxr-xr-xWebCore/dom/make_names.pl226
-rw-r--r--WebCore/editing/EditingBehavior.h4
-rw-r--r--WebCore/editing/EditorCommand.cpp5
-rw-r--r--WebCore/editing/IndentOutdentCommand.cpp58
-rw-r--r--WebCore/editing/IndentOutdentCommand.h1
-rw-r--r--WebCore/editing/InsertLineBreakCommand.cpp5
-rw-r--r--WebCore/editing/InsertParagraphSeparatorCommand.cpp5
-rw-r--r--WebCore/editing/SelectionController.cpp8
-rw-r--r--WebCore/editing/SelectionController.h6
-rw-r--r--WebCore/history/BackForwardController.cpp51
-rw-r--r--WebCore/history/BackForwardController.h54
-rw-r--r--WebCore/history/BackForwardControllerClient.h48
-rw-r--r--WebCore/history/BackForwardList.h93
-rw-r--r--WebCore/history/BackForwardListChromium.cpp69
-rw-r--r--WebCore/history/BackForwardListImpl.cpp (renamed from WebCore/history/BackForwardList.cpp)52
-rw-r--r--WebCore/history/BackForwardListImpl.h107
-rw-r--r--WebCore/history/CachedFrame.cpp6
-rw-r--r--WebCore/history/CachedFrame.h5
-rw-r--r--WebCore/html/FileReader.cpp9
-rw-r--r--WebCore/html/FileStreamClient.h1
-rw-r--r--WebCore/html/FileStreamProxy.cpp17
-rw-r--r--WebCore/html/FileStreamProxy.h7
-rw-r--r--WebCore/html/HTMLAnchorElement.idl2
-rw-r--r--WebCore/html/HTMLAreaElement.idl2
-rw-r--r--WebCore/html/HTMLCanvasElement.cpp123
-rw-r--r--WebCore/html/HTMLCanvasElement.h58
-rw-r--r--WebCore/html/HTMLConstructionSite.cpp367
-rw-r--r--WebCore/html/HTMLConstructionSite.h141
-rw-r--r--WebCore/html/HTMLDocumentParser.cpp15
-rw-r--r--WebCore/html/HTMLElementStack.cpp83
-rw-r--r--WebCore/html/HTMLElementStack.h15
-rw-r--r--WebCore/html/HTMLEntityNames.json8554
-rw-r--r--WebCore/html/HTMLFormattingElementList.cpp98
-rw-r--r--WebCore/html/HTMLFormattingElementList.h67
-rw-r--r--WebCore/html/HTMLFrameElement.idl2
-rw-r--r--WebCore/html/HTMLImageElement.idl6
-rw-r--r--WebCore/html/HTMLInputElement.cpp2
-rw-r--r--WebCore/html/HTMLInputElement.h6
-rw-r--r--WebCore/html/HTMLInputElement.idl2
-rw-r--r--WebCore/html/HTMLLinkElement.cpp3
-rw-r--r--WebCore/html/HTMLLinkElement.h8
-rw-r--r--WebCore/html/HTMLLinkElement.idl2
-rw-r--r--WebCore/html/HTMLMediaElement.cpp32
-rw-r--r--WebCore/html/HTMLMediaElement.idl2
-rw-r--r--WebCore/html/HTMLObjectElement.cpp6
-rw-r--r--WebCore/html/HTMLObjectElement.idl2
-rw-r--r--WebCore/html/HTMLPlugInElement.cpp17
-rw-r--r--WebCore/html/HTMLPlugInElement.h4
-rw-r--r--WebCore/html/HTMLScriptElement.idl2
-rw-r--r--WebCore/html/HTMLSourceElement.cpp8
-rw-r--r--WebCore/html/HTMLSourceElement.h3
-rw-r--r--WebCore/html/HTMLSourceElement.idl2
-rw-r--r--WebCore/html/HTMLStyleElement.cpp8
-rw-r--r--WebCore/html/HTMLStyleElement.h1
-rw-r--r--WebCore/html/HTMLToken.h49
-rw-r--r--WebCore/html/HTMLTokenizer.cpp11
-rw-r--r--WebCore/html/HTMLTreeBuilder.cpp2515
-rw-r--r--WebCore/html/HTMLTreeBuilder.h123
-rw-r--r--WebCore/html/HTMLVideoElement.cpp2
-rw-r--r--WebCore/html/HTMLVideoElement.idl2
-rw-r--r--WebCore/html/TimeRanges.idl18
-rw-r--r--WebCore/html/canvas/CanvasRenderingContext2D.cpp6
-rw-r--r--WebCore/html/canvas/WebGLBuffer.cpp27
-rw-r--r--WebCore/html/canvas/WebGLRenderingContext.cpp30
-rw-r--r--WebCore/html/canvas/WebGLRenderingContext.h3
-rw-r--r--WebCore/inspector/CodeGeneratorInspector.pm298
-rw-r--r--WebCore/inspector/InspectorApplicationCacheAgent.cpp168
-rw-r--r--WebCore/inspector/InspectorApplicationCacheAgent.h109
-rw-r--r--WebCore/inspector/InspectorBackend.cpp21
-rw-r--r--WebCore/inspector/InspectorBackend.h8
-rw-r--r--WebCore/inspector/InspectorBackend.idl4
-rw-r--r--WebCore/inspector/InspectorCSSStore.cpp9
-rw-r--r--WebCore/inspector/InspectorController.cpp54
-rw-r--r--WebCore/inspector/InspectorController.h39
-rw-r--r--WebCore/inspector/InspectorDOMAgent.cpp374
-rw-r--r--WebCore/inspector/InspectorDOMAgent.h37
-rw-r--r--WebCore/inspector/InspectorFrontend.cpp263
-rw-r--r--WebCore/inspector/InspectorFrontend.h36
-rw-r--r--WebCore/inspector/InspectorFrontend2.idl39
-rw-r--r--WebCore/inspector/InspectorResource.cpp37
-rw-r--r--WebCore/inspector/InspectorResource.h9
-rw-r--r--WebCore/inspector/InspectorTimelineAgent.cpp123
-rw-r--r--WebCore/inspector/InspectorTimelineAgent.h25
-rw-r--r--WebCore/inspector/TimelineRecordFactory.cpp176
-rw-r--r--WebCore/inspector/TimelineRecordFactory.h36
-rw-r--r--WebCore/inspector/front-end/AbstractTimelinePanel.js4
-rw-r--r--WebCore/inspector/front-end/ApplicationCacheItemsView.js259
-rw-r--r--WebCore/inspector/front-end/AuditsPanel.js6
-rw-r--r--WebCore/inspector/front-end/CallStackSidebarPane.js5
-rw-r--r--WebCore/inspector/front-end/ConsolePanel.js4
-rw-r--r--WebCore/inspector/front-end/DOMAgent.js29
-rw-r--r--WebCore/inspector/front-end/ElementsPanel.js15
-rw-r--r--WebCore/inspector/front-end/Images/applicationCache.pngbin0 -> 1964 bytes
-rw-r--r--WebCore/inspector/front-end/Panel.js36
-rw-r--r--WebCore/inspector/front-end/ProfilesPanel.js5
-rw-r--r--WebCore/inspector/front-end/ResourcesPanel.js62
-rw-r--r--WebCore/inspector/front-end/ScriptsPanel.js14
-rw-r--r--WebCore/inspector/front-end/Settings.js30
-rw-r--r--WebCore/inspector/front-end/SourceCSSTokenizer.js4
-rw-r--r--WebCore/inspector/front-end/StoragePanel.js124
-rw-r--r--WebCore/inspector/front-end/StylesSidebarPane.js16
-rw-r--r--WebCore/inspector/front-end/TimelinePanel.js5
-rw-r--r--WebCore/inspector/front-end/WebKit.qrc2
-rw-r--r--WebCore/inspector/front-end/inspector.css22
-rw-r--r--WebCore/inspector/front-end/inspector.html1
-rw-r--r--WebCore/inspector/front-end/inspector.js41
-rw-r--r--WebCore/loader/CachedResource.cpp4
-rw-r--r--WebCore/loader/CrossOriginAccessControl.cpp16
-rw-r--r--WebCore/loader/CrossOriginAccessControl.h2
-rw-r--r--WebCore/loader/CrossOriginPreflightResultCache.cpp40
-rw-r--r--WebCore/loader/CrossOriginPreflightResultCache.h9
-rw-r--r--WebCore/loader/DocumentThreadableLoader.cpp27
-rw-r--r--WebCore/loader/DocumentThreadableLoader.h3
-rw-r--r--WebCore/loader/FrameLoader.cpp35
-rw-r--r--WebCore/loader/FrameLoader.h3
-rw-r--r--WebCore/loader/FrameLoaderTypes.h15
-rw-r--r--WebCore/loader/ImageLoader.cpp5
-rw-r--r--WebCore/loader/SubresourceLoader.cpp11
-rw-r--r--WebCore/loader/TextResourceDecoder.cpp4
-rw-r--r--WebCore/loader/appcache/ApplicationCacheGroup.cpp140
-rw-r--r--WebCore/loader/appcache/ApplicationCacheGroup.h25
-rw-r--r--WebCore/loader/appcache/ApplicationCacheHost.cpp36
-rw-r--r--WebCore/loader/appcache/ApplicationCacheHost.h23
-rw-r--r--WebCore/loader/appcache/ApplicationCacheStorage.cpp2
-rwxr-xr-xWebCore/make-export-file-generator57
-rw-r--r--WebCore/mathml/MathMLElement.cpp25
-rw-r--r--WebCore/mathml/MathMLElement.h3
-rw-r--r--WebCore/mathml/RenderMathMLFraction.cpp2
-rw-r--r--WebCore/mathml/RenderMathMLSquareRoot.cpp2
-rw-r--r--WebCore/mathml/mathattrs.in2
-rw-r--r--WebCore/mathml/mathtags.in7
-rw-r--r--WebCore/notifications/Notification.cpp4
-rw-r--r--WebCore/notifications/NotificationCenter.cpp10
-rw-r--r--WebCore/notifications/NotificationCenter.h2
-rw-r--r--WebCore/notifications/NotificationPresenter.h11
-rw-r--r--WebCore/page/Chrome.cpp10
-rw-r--r--WebCore/page/Chrome.h3
-rw-r--r--WebCore/page/ChromeClient.h4
-rw-r--r--WebCore/page/DOMTimer.cpp5
-rw-r--r--WebCore/page/DOMWindow.cpp7
-rw-r--r--WebCore/page/DOMWindow.idl10
-rw-r--r--WebCore/page/EventHandler.cpp14
-rw-r--r--WebCore/page/EventSource.cpp36
-rw-r--r--WebCore/page/EventSource.h14
-rw-r--r--WebCore/page/Frame.cpp26
-rw-r--r--WebCore/page/FrameView.cpp15
-rw-r--r--WebCore/page/Navigation.cpp18
-rw-r--r--WebCore/page/Navigation.h7
-rw-r--r--WebCore/page/Navigation.idl10
-rw-r--r--WebCore/page/Navigator.cpp103
-rw-r--r--WebCore/page/Navigator.h20
-rw-r--r--WebCore/page/Navigator.idl9
-rw-r--r--WebCore/page/Page.cpp51
-rw-r--r--WebCore/page/Page.h14
-rw-r--r--WebCore/page/PageGroup.cpp16
-rw-r--r--WebCore/page/PageGroup.h15
-rw-r--r--WebCore/page/Timing.cpp28
-rw-r--r--WebCore/page/Timing.h5
-rw-r--r--WebCore/page/Timing.idl16
-rw-r--r--WebCore/page/UserContentTypes.h38
-rw-r--r--WebCore/page/UserScript.h10
-rw-r--r--WebCore/page/UserStyleSheet.h7
-rw-r--r--WebCore/page/win/EventHandlerWin.cpp7
-rw-r--r--WebCore/page/wince/FrameWince.cpp18
-rw-r--r--WebCore/platform/CrossThreadCopier.h4
-rw-r--r--WebCore/platform/PlatformKeyboardEvent.h6
-rw-r--r--WebCore/platform/PurgeableBuffer.h9
-rw-r--r--WebCore/platform/SharedBuffer.cpp7
-rw-r--r--WebCore/platform/SharedBuffer.h4
-rw-r--r--WebCore/platform/ThemeTypes.h4
-rw-r--r--WebCore/platform/chromium/GLES2Context.h20
-rw-r--r--WebCore/platform/graphics/Color.cpp12
-rw-r--r--WebCore/platform/graphics/Color.h4
-rw-r--r--WebCore/platform/graphics/GlyphMetricsMap.h2
-rw-r--r--WebCore/platform/graphics/GraphicsLayer.h5
-rw-r--r--WebCore/platform/graphics/MediaPlayer.cpp7
-rw-r--r--WebCore/platform/graphics/MediaPlayer.h2
-rw-r--r--WebCore/platform/graphics/SimpleFontData.h3
-rw-r--r--WebCore/platform/graphics/cairo/DrawErrorUnderline.h2
-rw-r--r--WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp4
-rw-r--r--WebCore/platform/graphics/chromium/FontLinux.cpp33
-rw-r--r--WebCore/platform/graphics/chromium/LayerRendererChromium.cpp2
-rw-r--r--WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp9
-rw-r--r--WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp30
-rw-r--r--WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp6
-rw-r--r--WebCore/platform/graphics/mac/GraphicsLayerCA.mm4
-rw-r--r--WebCore/platform/graphics/qt/GraphicsContextQt.cpp3
-rw-r--r--WebCore/platform/graphics/qt/GraphicsLayerQt.cpp41
-rw-r--r--WebCore/platform/graphics/qt/GraphicsLayerQt.h1
-rw-r--r--WebCore/platform/graphics/qt/ImageBufferQt.cpp36
-rw-r--r--WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp1
-rw-r--r--WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp10
-rw-r--r--WebCore/platform/graphics/skia/GradientSkia.cpp14
-rw-r--r--WebCore/platform/graphics/skia/GraphicsContextSkia.cpp4
-rw-r--r--WebCore/platform/graphics/skia/SkiaUtils.cpp4
-rw-r--r--WebCore/platform/graphics/wince/GraphicsContextWince.cpp4
-rw-r--r--WebCore/platform/graphics/wx/GraphicsContextWx.cpp4
-rw-r--r--WebCore/platform/gtk/ClipboardUtilitiesGtk.cpp19
-rw-r--r--WebCore/platform/gtk/ClipboardUtilitiesGtk.h1
-rw-r--r--WebCore/platform/gtk/GtkVersioning.h2
-rw-r--r--WebCore/platform/gtk/PasteboardHelper.cpp82
-rw-r--r--WebCore/platform/gtk/PasteboardHelper.h4
-rw-r--r--WebCore/platform/gtk/ScrollViewGtk.cpp74
-rw-r--r--WebCore/platform/mac/PurgeableBufferMac.cpp10
-rw-r--r--WebCore/platform/network/ResourceErrorBase.cpp2
-rw-r--r--WebCore/platform/network/ResourceErrorBase.h2
-rw-r--r--WebCore/platform/network/ResourceLoadTiming.h86
-rw-r--r--WebCore/platform/network/ResourceRequestBase.h7
-rw-r--r--WebCore/platform/network/ResourceResponseBase.cpp30
-rw-r--r--WebCore/platform/network/ResourceResponseBase.h8
-rw-r--r--WebCore/platform/network/android/ResourceHandleAndroid.cpp6
-rw-r--r--WebCore/platform/network/cf/ResourceHandleCFNet.cpp6
-rw-r--r--WebCore/platform/network/curl/ResourceHandleCurl.cpp4
-rw-r--r--WebCore/platform/network/mac/ResourceHandleMac.mm3
-rw-r--r--WebCore/platform/network/qt/ResourceHandleQt.cpp6
-rw-r--r--WebCore/platform/network/soup/ResourceHandleSoup.cpp8
-rw-r--r--WebCore/platform/qt/ClipboardQt.cpp18
-rw-r--r--WebCore/platform/qt/PlatformKeyboardEventQt.cpp4
-rw-r--r--WebCore/platform/text/TextEncodingRegistry.cpp10
-rw-r--r--WebCore/plugins/DOMMimeType.cpp (renamed from WebCore/plugins/MimeType.cpp)18
-rw-r--r--WebCore/plugins/DOMMimeType.h (renamed from WebCore/plugins/MimeType.h)44
-rw-r--r--WebCore/plugins/DOMMimeType.idl (renamed from WebCore/plugins/MimeType.idl)4
-rw-r--r--WebCore/plugins/DOMMimeTypeArray.cpp (renamed from WebCore/plugins/MimeTypeArray.cpp)22
-rw-r--r--WebCore/plugins/DOMMimeTypeArray.h (renamed from WebCore/plugins/MimeTypeArray.h)40
-rw-r--r--WebCore/plugins/DOMMimeTypeArray.idl (renamed from WebCore/plugins/MimeTypeArray.idl)6
-rw-r--r--WebCore/plugins/DOMPlugin.cpp (renamed from WebCore/plugins/Plugin.cpp)24
-rw-r--r--WebCore/plugins/DOMPlugin.h (renamed from WebCore/plugins/Plugin.h)48
-rw-r--r--WebCore/plugins/DOMPlugin.idl (renamed from WebCore/plugins/Plugin.idl)6
-rw-r--r--WebCore/plugins/DOMPluginArray.cpp (renamed from WebCore/plugins/PluginArray.cpp)24
-rw-r--r--WebCore/plugins/DOMPluginArray.h (renamed from WebCore/plugins/PluginArray.h)42
-rw-r--r--WebCore/plugins/DOMPluginArray.idl (renamed from WebCore/plugins/PluginArray.idl)6
-rw-r--r--WebCore/plugins/PluginView.cpp6
-rw-r--r--WebCore/rendering/InlineFlowBox.cpp19
-rw-r--r--WebCore/rendering/InlineFlowBox.h4
-rw-r--r--WebCore/rendering/MediaControlElements.cpp11
-rw-r--r--WebCore/rendering/MediaControlElements.h8
-rw-r--r--WebCore/rendering/RenderBlock.cpp24
-rw-r--r--WebCore/rendering/RenderBlockLineLayout.cpp2
-rw-r--r--WebCore/rendering/RenderBoxModelObject.cpp2
-rw-r--r--WebCore/rendering/RenderButton.cpp5
-rw-r--r--WebCore/rendering/RenderEmbeddedObject.cpp143
-rw-r--r--WebCore/rendering/RenderEmbeddedObject.h10
-rw-r--r--WebCore/rendering/RenderLayer.cpp1
-rw-r--r--WebCore/rendering/RenderLayerBacking.cpp38
-rw-r--r--WebCore/rendering/RenderLayerBacking.h2
-rw-r--r--WebCore/rendering/RenderLayerCompositor.cpp79
-rw-r--r--WebCore/rendering/RenderLayerCompositor.h12
-rw-r--r--WebCore/rendering/RenderMedia.cpp41
-rw-r--r--WebCore/rendering/RenderMedia.h2
-rw-r--r--WebCore/rendering/RenderMediaControlsChromium.cpp1
-rw-r--r--WebCore/rendering/RenderObject.cpp21
-rw-r--r--WebCore/rendering/RenderObject.h3
-rw-r--r--WebCore/rendering/RenderPath.cpp6
-rw-r--r--WebCore/rendering/RenderSVGContainer.cpp23
-rw-r--r--WebCore/rendering/RenderSVGContainer.h6
-rw-r--r--WebCore/rendering/RenderSVGResourceFilter.cpp6
-rw-r--r--WebCore/rendering/RenderSVGResourceGradient.cpp27
-rw-r--r--WebCore/rendering/RenderSVGRoot.cpp20
-rw-r--r--WebCore/rendering/RenderSVGRoot.h4
-rw-r--r--WebCore/rendering/RenderSVGViewportContainer.cpp19
-rw-r--r--WebCore/rendering/RenderTheme.cpp13
-rw-r--r--WebCore/rendering/RenderTheme.h10
-rw-r--r--WebCore/rendering/RenderThemeMac.h6
-rw-r--r--WebCore/rendering/RenderThemeMac.mm71
-rw-r--r--WebCore/rendering/RenderThemeWin.cpp20
-rw-r--r--WebCore/rendering/RenderThemeWin.h5
-rw-r--r--WebCore/rendering/RenderThemeWince.cpp21
-rw-r--r--WebCore/rendering/RenderThemeWince.h5
-rw-r--r--WebCore/rendering/RenderView.cpp1
-rw-r--r--WebCore/rendering/RenderWidget.cpp10
-rw-r--r--WebCore/rendering/RootInlineBox.h2
-rw-r--r--WebCore/rendering/SVGRenderSupport.cpp37
-rw-r--r--WebCore/rendering/style/RenderStyle.cpp8
-rw-r--r--WebCore/rendering/style/RenderStyle.h4
-rw-r--r--WebCore/rendering/style/RenderStyleConstants.h5
-rw-r--r--WebCore/rendering/style/SVGRenderStyleDefs.h7
-rw-r--r--WebCore/storage/IDBAny.cpp13
-rw-r--r--WebCore/storage/IDBAny.h5
-rw-r--r--WebCore/storage/IDBAny.idl3
-rw-r--r--WebCore/storage/IDBDatabaseRequest.cpp2
-rw-r--r--WebCore/storage/IDBDatabaseRequest.h2
-rw-r--r--WebCore/storage/IDBDatabaseRequest.idl2
-rw-r--r--WebCore/storage/IDBKey.cpp8
-rw-r--r--WebCore/storage/IDBKey.h8
-rw-r--r--WebCore/storage/IDBKeyRange.h3
-rw-r--r--WebCore/storage/IDBKeyTree.h30
-rw-r--r--WebCore/storage/IDBObjectStore.h6
-rwxr-xr-xWebCore/storage/IDBObjectStoreImpl.cpp47
-rw-r--r--WebCore/storage/IDBObjectStoreImpl.h11
-rw-r--r--WebCore/storage/IDBObjectStoreRequest.cpp52
-rw-r--r--WebCore/storage/IDBObjectStoreRequest.h10
-rw-r--r--WebCore/storage/IDBObjectStoreRequest.idl14
-rw-r--r--WebCore/storage/IDBRequest.cpp3
-rw-r--r--WebCore/storage/IndexedDatabaseRequest.cpp3
-rw-r--r--WebCore/storage/StorageAreaSync.cpp22
-rw-r--r--WebCore/storage/StorageAreaSync.h7
-rw-r--r--WebCore/svg/SVGAnimatedString.idl4
-rw-r--r--WebCore/svg/SVGColor.idl14
-rw-r--r--WebCore/svg/SVGDocument.idl6
-rw-r--r--WebCore/svg/SVGDocumentExtensions.cpp7
-rw-r--r--WebCore/svg/SVGFontFaceElement.cpp1
-rw-r--r--WebCore/svg/SVGLangSpace.idl4
-rw-r--r--WebCore/svg/SVGPathSegList.cpp24
-rw-r--r--WebCore/svg/SVGSVGElement.cpp23
-rw-r--r--WebCore/svg/SVGSVGElement.h4
-rw-r--r--WebCore/svg/SVGSVGElement.idl11
-rw-r--r--WebCore/svg/SVGStringList.idl26
-rw-r--r--WebCore/svg/SVGStylable.idl4
-rw-r--r--WebCore/svg/SVGStyleElement.cpp2
-rw-r--r--WebCore/svg/SVGStyleElement.idl6
-rw-r--r--WebCore/svg/SVGStyledElement.cpp43
-rw-r--r--WebCore/svg/SVGStyledElement.h4
-rw-r--r--WebCore/svg/SVGTests.idl2
-rw-r--r--WebCore/svg/SVGUseElement.cpp33
-rw-r--r--WebCore/svg/SVGUseElement.h3
-rw-r--r--WebCore/svg/SVGZoomEvent.idl2
-rw-r--r--WebCore/svg/graphics/SVGImage.cpp2
-rw-r--r--WebCore/websockets/WebSocket.cpp5
-rw-r--r--WebCore/websockets/WorkerThreadableWebSocketChannel.cpp8
-rw-r--r--WebCore/workers/DefaultSharedWorkerRepository.cpp2
-rw-r--r--WebCore/workers/SharedWorker.cpp31
-rw-r--r--WebCore/workers/SharedWorker.h18
-rw-r--r--WebCore/workers/Worker.cpp31
-rw-r--r--WebCore/workers/Worker.h12
-rw-r--r--WebCore/workers/WorkerContext.cpp4
-rw-r--r--WebCore/workers/WorkerContext.h4
-rw-r--r--WebCore/workers/WorkerMessagingProxy.cpp6
-rw-r--r--WebCore/xml/XMLHttpRequest.cpp4
-rw-r--r--WebCore/xml/XPathEvaluator.idl2
-rw-r--r--WebCore/xml/XPathFunctions.cpp10
-rw-r--r--WebCore/xml/XSLTProcessorLibxslt.cpp2
498 files changed, 24641 insertions, 4718 deletions
diff --git a/WebCore/Android.derived.jscbindings.mk b/WebCore/Android.derived.jscbindings.mk
index c9d5b55..1929729 100644
--- a/WebCore/Android.derived.jscbindings.mk
+++ b/WebCore/Android.derived.jscbindings.mk
@@ -393,6 +393,7 @@ GEN := \
$(intermediates)/storage/JSIDBErrorEvent.h \
$(intermediates)/storage/JSIDBEvent.h \
$(intermediates)/storage/JSIDBIndexRequest.h \
+ $(intermediates)/storage/JSIDBKey.h \
$(intermediates)/storage/JSIDBKeyRange.h \
$(intermediates)/storage/JSIDBRequest.h \
$(intermediates)/storage/JSIDBSuccessEvent.h \
diff --git a/WebCore/Android.derived.v8bindings.mk b/WebCore/Android.derived.v8bindings.mk
index 216e200..c1065fa 100644
--- a/WebCore/Android.derived.v8bindings.mk
+++ b/WebCore/Android.derived.v8bindings.mk
@@ -387,6 +387,7 @@ GEN := \
$(intermediates)/bindings/V8IDBErrorEvent.h \
$(intermediates)/bindings/V8IDBEvent.h \
$(intermediates)/bindings/V8IDBIndexRequest.h \
+ $(intermediates)/bindings/V8IDBKey.h \
$(intermediates)/bindings/V8IDBKeyRange.h \
$(intermediates)/bindings/V8IDBRequest.h \
$(intermediates)/bindings/V8IDBSuccessEvent.h \
diff --git a/WebCore/Android.jscbindings.mk b/WebCore/Android.jscbindings.mk
index e2f0fb6..5983450 100644
--- a/WebCore/Android.jscbindings.mk
+++ b/WebCore/Android.jscbindings.mk
@@ -61,6 +61,7 @@ LOCAL_SRC_FILES += \
bindings/js/DOMObjectHashTableMap.cpp \
bindings/js/DOMWrapperWorld.cpp \
bindings/js/GCController.cpp \
+ bindings/js/IDBBindingUtilities.cpp \
bindings/js/JSAttrCustom.cpp \
bindings/js/JSAudioConstructor.cpp \
bindings/js/JSCDATASectionCustom.cpp \
@@ -119,6 +120,8 @@ LOCAL_SRC_FILES += \
bindings/js/JSHTMLOptionsCollectionCustom.cpp \
bindings/js/JSHTMLSelectElementCustom.cpp \
bindings/js/JSHistoryCustom.cpp \
+ bindings/js/JSIDBAnyCustom.cpp \
+ bindings/js/JSIDBKeyCustom.cpp \
bindings/js/JSImageConstructor.cpp \
bindings/js/JSImageDataCustom.cpp \
bindings/js/JSLazyEventListener.cpp \
diff --git a/WebCore/Android.mk b/WebCore/Android.mk
index 61591da..26eb405 100644
--- a/WebCore/Android.mk
+++ b/WebCore/Android.mk
@@ -155,7 +155,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
dom/Notation.cpp \
dom/OptionElement.cpp \
dom/OptionGroupElement.cpp \
- dom/DeviceOrientation.cpp \
+ dom/DeviceOrientationController.cpp \
dom/DeviceOrientationEvent.cpp \
dom/OverflowEvent.cpp \
dom/PageTransitionEvent.cpp \
@@ -274,6 +274,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
html/HTMLTreeBuilder.cpp \
html/HTMLAllCollection.cpp \
html/HTMLCollection.cpp \
+ html/HTMLConstructionSite.cpp \
html/HTMLDataListElement.cpp \
html/HTMLDocument.cpp \
html/HTMLDocumentParser.cpp \
@@ -803,6 +804,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
storage/IDBEvent.cpp \
storage/IDBIndexImpl.cpp \
storage/IDBIndexRequest.cpp \
+ storage/IDBKey.cpp \
storage/IDBKeyRange.cpp \
storage/IDBObjectStoreImpl.cpp \
storage/IDBObjectStoreRequest.cpp \
diff --git a/WebCore/Android.v8bindings.mk b/WebCore/Android.v8bindings.mk
index 9eda878..8eaa091 100644
--- a/WebCore/Android.v8bindings.mk
+++ b/WebCore/Android.v8bindings.mk
@@ -49,8 +49,12 @@ LOCAL_SRC_FILES += \
bindings/v8/DateExtension.cpp \
bindings/v8/DOMData.cpp \
bindings/v8/DOMDataStore.cpp \
+<<<<<<< HEAD
bindings/v8/DOMWrapperWorld.cpp \
bindings/v8/IsolatedWorld.cpp \
+=======
+ bindings/v8/IDBBindingUtilities.cpp \
+>>>>>>> webkit.org at r63173
bindings/v8/MainThreadDOMData.cpp \
bindings/v8/NPV8Object.cpp \
bindings/v8/ScheduledAction.cpp \
@@ -125,7 +129,12 @@ LOCAL_SRC_FILES += \
bindings/v8/custom/V8EventSourceConstructor.cpp \
bindings/v8/custom/V8Float32ArrayCustom.cpp \
bindings/v8/custom/V8GeolocationCustom.cpp \
+<<<<<<< HEAD
bindings/v8/custom/V8HistoryCustom.cpp \
+=======
+ bindings/v8/custom/V8IDBAny.cpp \
+ bindings/v8/custom/V8IDBKey.cpp \
+>>>>>>> webkit.org at r63173
bindings/v8/custom/V8HTMLAllCollectionCustom.cpp \
bindings/v8/custom/V8HTMLAudioElementConstructor.cpp \
bindings/v8/custom/V8HTMLCanvasElementCustom.cpp \
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index c8fdde5..957b770 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -1,6 +1,7 @@
SET(WebCore_INCLUDE_DIRECTORIES
"${WEBCORE_DIR}"
"${WEBCORE_DIR}/accessibility"
+ "${WEBCORE_DIR}/bindings"
"${WEBCORE_DIR}/bindings/js"
"${WEBCORE_DIR}/bridge"
"${WEBCORE_DIR}/bridge/c"
@@ -266,6 +267,7 @@ SET(WebCore_IDL_FILES
html/ImageData.idl
html/MediaError.idl
html/TextMetrics.idl
+ html/TimeRanges.idl
html/ValidityState.idl
html/VoidCallback.idl
@@ -319,10 +321,10 @@ SET(WebCore_IDL_FILES
page/WebKitPoint.idl
page/WorkerNavigator.idl
- plugins/MimeType.idl
- plugins/MimeTypeArray.idl
- plugins/Plugin.idl
- plugins/PluginArray.idl
+ plugins/DOMMimeType.idl
+ plugins/DOMMimeTypeArray.idl
+ plugins/DOMPlugin.idl
+ plugins/DOMPluginArray.idl
storage/Database.idl
storage/DatabaseCallback.idl
@@ -334,6 +336,7 @@ SET(WebCore_IDL_FILES
storage/IDBErrorEvent.idl
storage/IDBEvent.idl
storage/IDBIndexRequest.idl
+ storage/IDBKey.idl
storage/IDBKeyRange.idl
storage/IDBObjectStoreRequest.idl
storage/IDBRequest.idl
@@ -555,6 +558,7 @@ SET(WebCore_SOURCES
bindings/js/DOMObjectHashTableMap.cpp
bindings/js/DOMWrapperWorld.cpp
bindings/js/GCController.cpp
+ bindings/js/IDBBindingUtilities.cpp
bindings/js/JavaScriptCallFrame.cpp
bindings/js/JSAttrCustom.cpp
bindings/js/JSCallbackData.cpp
@@ -598,6 +602,8 @@ SET(WebCore_SOURCES
bindings/js/JSExceptionBase.cpp
bindings/js/JSGeolocationCustom.cpp
bindings/js/JSHistoryCustom.cpp
+ bindings/js/JSIDBAnyCustom.cpp
+ bindings/js/JSIDBKeyCustom.cpp
bindings/js/JSHTMLAllCollectionCustom.cpp
bindings/js/JSHTMLAppletElementCustom.cpp
bindings/js/JSHTMLCanvasElementCustom.cpp
@@ -624,7 +630,7 @@ SET(WebCore_SOURCES
bindings/js/JSMessageChannelCustom.cpp
bindings/js/JSMessageEventCustom.cpp
bindings/js/JSMessagePortCustom.cpp
- bindings/js/JSMimeTypeArrayCustom.cpp
+ bindings/js/JSDOMMimeTypeArrayCustom.cpp
bindings/js/JSNamedNodeMapCustom.cpp
bindings/js/JSNavigatorCustom.cpp
bindings/js/JSNodeCustom.cpp
@@ -633,8 +639,8 @@ SET(WebCore_SOURCES
bindings/js/JSNodeIteratorCustom.cpp
bindings/js/JSNodeListCustom.cpp
bindings/js/JSOptionConstructor.cpp
- bindings/js/JSPluginArrayCustom.cpp
- bindings/js/JSPluginCustom.cpp
+ bindings/js/JSDOMPluginArrayCustom.cpp
+ bindings/js/JSDOMPluginCustom.cpp
bindings/js/JSPluginElementFunctions.cpp
bindings/js/JSPopStateEventCustom.cpp
bindings/js/JSScriptProfileNodeCustom.cpp
@@ -662,7 +668,6 @@ SET(WebCore_SOURCES
bindings/js/ScriptCallFrame.cpp
bindings/js/ScriptCallStack.cpp
bindings/js/ScriptController.cpp
- bindings/js/ScriptControllerEfl.cpp
bindings/js/ScriptDebugServer.cpp
bindings/js/ScriptEventListener.cpp
bindings/js/ScriptFunctionCall.cpp
@@ -757,7 +762,6 @@ SET(WebCore_SOURCES
dom/Attribute.cpp
dom/BeforeTextInsertedEvent.cpp
dom/BeforeUnloadEvent.cpp
- dom/CanvasSurface.cpp
dom/CDATASection.cpp
dom/CharacterData.cpp
dom/CheckedRadioButtons.cpp
@@ -774,7 +778,7 @@ SET(WebCore_SOURCES
dom/CustomEvent.cpp
dom/DatasetDOMStringMap.cpp
dom/DecodedDataDocumentParser.cpp
- dom/DeviceOrientation.cpp
+ dom/DeviceOrientationController.cpp
dom/DeviceOrientationEvent.cpp
dom/Document.cpp
dom/DocumentFragment.cpp
@@ -898,7 +902,8 @@ SET(WebCore_SOURCES
editing/markup.cpp
editing/visible_units.cpp
- history/BackForwardList.cpp
+ history/BackForwardController.cpp
+ history/BackForwardListImpl.cpp
history/CachedFrame.cpp
history/CachedPage.cpp
history/HistoryItem.cpp
@@ -935,6 +940,7 @@ SET(WebCore_SOURCES
html/HTMLButtonElement.cpp
html/HTMLCanvasElement.cpp
html/HTMLCollection.cpp
+ html/HTMLConstructionSite.cpp
html/HTMLDListElement.cpp
html/HTMLDataGridCellElement.cpp
html/HTMLDataGridColElement.cpp
@@ -1025,6 +1031,7 @@ SET(WebCore_SOURCES
inspector/ConsoleMessage.cpp
inspector/InjectedScript.cpp
inspector/InjectedScriptHost.cpp
+ inspector/InspectorApplicationCacheAgent.cpp
inspector/InspectorBackend.cpp
inspector/InspectorCSSStore.cpp
inspector/InspectorController.cpp
@@ -1283,10 +1290,10 @@ SET(WebCore_SOURCES
platform/text/transcoder/FontTranscoder.cpp
- plugins/MimeTypeArray.cpp
- plugins/MimeType.cpp
- plugins/PluginArray.cpp
- plugins/Plugin.cpp
+ plugins/DOMMimeTypeArray.cpp
+ plugins/DOMMimeType.cpp
+ plugins/DOMPluginArray.cpp
+ plugins/DOMPlugin.cpp
plugins/PluginData.cpp
plugins/PluginDataNone.cpp
plugins/PluginMainThreadScheduler.cpp
@@ -1403,6 +1410,7 @@ SET(WebCore_SOURCES
storage/IDBDatabaseRequest.cpp
storage/IDBErrorEvent.cpp
storage/IDBEvent.cpp
+ storage/IDBKey.cpp
storage/IDBKeyRange.cpp
storage/IDBRequest.cpp
storage/IDBObjectStoreImpl.cpp
@@ -1707,7 +1715,9 @@ FOREACH (_file ${WebCore_IDL_PURE_FILES})
GENERATE_JS_FROM_IDL_PURE(${_file})
ENDFOREACH ()
-LIST(APPEND WebCore_SOURCES ${JS_IDL_FILES})
+GENERATE_INSPECTOR_FROM_IDL(inspector/InspectorFrontend2.idl)
+
+LIST(APPEND WebCore_SOURCES ${JS_IDL_FILES} ${Inspector_IDL_FILES})
GENERATE_GPERF(${WEBCORE_DIR}/html/HTMLEntityNames.gperf)
GENERATE_GPERF(${WEBCORE_DIR}/platform/ColorData.gperf)
diff --git a/WebCore/CMakeListsEfl.txt b/WebCore/CMakeListsEfl.txt
index da1f27a..ab475f5 100644
--- a/WebCore/CMakeListsEfl.txt
+++ b/WebCore/CMakeListsEfl.txt
@@ -17,6 +17,7 @@ LIST(APPEND WebCore_INCLUDE_DIRECTORIES
LIST(APPEND WebCore_SOURCES
accessibility/efl/AccessibilityObjectEfl.cpp
+ bindings/js/ScriptControllerEfl.cpp
page/efl/DragControllerEfl.cpp
page/efl/EventHandlerEfl.cpp
page/efl/FrameEfl.cpp
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c27e3b2..e0d5843 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,5854 @@
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Fix a typo in the adoption agency causing test failures
+ https://bugs.webkit.org/show_bug.cgi?id=42133
+
+ The new behavior actually differs from old webkit.
+ <p><b><p>TEST
+ was not bold in the old parser, but is bold now.
+ This matches Minefield and the HTML5 spec.
+
+ Covered by two tests in html5lib/runner.html.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+
+2010-07-12 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Joseph Pecoraro.
+
+ Web Inspector: provide starts and ends for network phases instead of duration.
+
+ https://bugs.webkit.org/show_bug.cgi?id=42091
+
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::updateResponse):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::buildObjectForTiming):
+ * platform/network/ResourceLoadTiming.h:
+ (WebCore::ResourceLoadTiming::deepCopy):
+ (WebCore::ResourceLoadTiming::operator==):
+ (WebCore::ResourceLoadTiming::ResourceLoadTiming):
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::ResourceResponseBase):
+ (WebCore::ResourceResponseBase::wasCached):
+ (WebCore::ResourceResponseBase::setWasCached):
+ * platform/network/ResourceResponseBase.h:
+
+2010-07-12 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ HTML5 Parser: document.write after onload blows away document
+ https://bugs.webkit.org/show_bug.cgi?id=40745
+
+ Rather than blowing away the document when we get a document.write call
+ after the document is closed, we new ignore the write. This
+ technically violates the spec (which requires us to blow away the
+ document), but blowing away the document breaks too many web sites.
+
+ Rather than this patch, we could go back to our old behavior (which was
+ to append the bytes just before EOF), but implementing this approach
+ (suggested by Henri) will let us gather data about whether his approach
+ is workable.
+
+ See also: http://www.w3.org/Bugs/Public/show_bug.cgi?id=9767
+
+ * dom/Document.cpp:
+ (WebCore::Document::write):
+ * html/HTMLDocumentParser.cpp:
+ (WebCore::HTMLDocumentParser::insert):
+
+2010-07-12 Tony Gentilcore <tonyg@chromium.org>
+
+ Reviewed by Oliver Hunt.
+
+ Strip BOMs from source before passing to V8
+ https://bugs.webkit.org/show_bug.cgi?id=42102
+
+ This extra copy may carry a performance penalty. We should investigate
+ whether this allows any simplification in v8/scanner.cc:SkipJavaScriptWhiteSpace().
+
+ No new tests because no new functionality.
+
+ * bindings/v8/ScriptSourceCode.h:
+ (WebCore::ScriptSourceCode::ScriptSourceCode):
+
+2010-07-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed. make distcheck fix.
+
+ * GNUmakefile.am:
+
+2010-07-12 Yuta Kitamura <yutak@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix crash caused by unintentional deletion of worker bridge and channel.
+
+ WebSocket: Crash caused by calling close() within onmessage handler
+ https://bugs.webkit.org/show_bug.cgi?id=41507
+
+ Test: websocket/tests/workers/close-in-onmessage-crash.html
+
+ * websockets/WebSocket.cpp:
+ (WebCore::WebSocket::close): bufferedAmount() may call WebSocket::didClose(),
+ which causes m_channel to get freed.
+ * websockets/WorkerThreadableWebSocketChannel.cpp:
+ (WebCore::WorkerThreadableWebSocketChannel::Bridge::send): Add reference to
+ the bridge because waitForMethodCompletion() may dereference the bridge.
+ (WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount): Ditto.
+ (WebCore::WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion):
+ The root cause is a call to WorkerRunLoop::runInMode in this function.
+ It may call WebSocket::didClose() even inside WebSocket::close(), which frees
+ everything including the worker bridge and the channel.
+
+2010-07-12 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ REGRESSION (HTML5 parser?): Impossible to get past the CAPTCHA on postcode.royalmail.com
+ https://bugs.webkit.org/show_bug.cgi?id=41797
+
+ Once we resume parsing after script execution, we want to clear the
+ preload scanner so we don't scan any bytes it might have accumulated.
+
+ Test: http/tests/loading/preload-slow-loading.php
+
+ * html/HTMLDocumentParser.cpp:
+ (WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution):
+
+2010-07-12 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Jian Li.
+
+ Adding directional property enums back into
+ CSSComputedStyleDeclaration::getPropertyCSSValue().
+
+ https://bugs.webkit.org/show_bug.cgi?id=42122
+
+ The four directional -webkit- properties -- CSSPropertyWebkitMarginEnd,
+ CSSPropertyWebkitMarginStart, CSSPropertyWebkitPaddingEnd, and
+ CSSPropertyWebkitPaddingStart -- are resolved into other css
+ properties before the swtich statement via a call to
+ CSSProperty::resolveDirectionAwareProperty(). Thus, they are never
+ seen by the switch statement. However, if you leave out a potential
+ enum value from the switch, gcc will generate a warning if -Wall is
+ specified. This warning breaks the Chromium build. To avoid this,
+ we add in the enum values and ASSERT_NOT_REACHED() if they are hit.
+
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+
+2010-07-12 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX converts AtomicStrings to .string() more than needed
+ https://bugs.webkit.org/show_bug.cgi?id=42056
+
+ No behavior change. No new tests.
+
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isPressed):
+ (WebCore::siblingWithAriaRole):
+ (WebCore::AccessibilityRenderObject::intValue):
+ (WebCore::AccessibilityRenderObject::accessibilityDescription):
+ (WebCore::AccessibilityRenderObject::hasTextAlternative):
+ (WebCore::AccessibilityRenderObject::supportsARIAFlowTo):
+ (WebCore::AccessibilityRenderObject::supportsARIADropping):
+ (WebCore::AccessibilityRenderObject::supportsARIADragging):
+ (WebCore::AccessibilityRenderObject::determineARIADropEffects):
+ (WebCore::AccessibilityRenderObject::isExpanded):
+ (WebCore::AccessibilityRenderObject::isRequired):
+ (WebCore::AccessibilityRenderObject::isSelected):
+ (WebCore::AccessibilityRenderObject::supportsARIAOwns):
+ (WebCore::AccessibilityRenderObject::isEnabled):
+ (WebCore::AccessibilityRenderObject::activeDescendant):
+ (WebCore::AccessibilityRenderObject::determineAriaRoleAttribute):
+ (WebCore::AccessibilityRenderObject::orientation):
+ (WebCore::AccessibilityRenderObject::canSetExpandedAttribute):
+ (WebCore::AccessibilityRenderObject::canSetValueAttribute):
+
+2010-07-12 Tony Chang <tony@chromium.org>
+
+ Reviewed by David Hyatt.
+
+ crash in FrameView::detachCustomScrollbars
+ https://bugs.webkit.org/show_bug.cgi?id=41196
+
+ Test: scrollbars/hidden-iframe-scrollbar-crash.html
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::detachCustomScrollbars):
+
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ HTML tags should break out of foreign content
+ https://bugs.webkit.org/show_bug.cgi?id=42106
+
+ Implement another paragraph of the spec to pass another
+ bunch of foreign content tests.
+
+ This fixes a bunch of tests in html5lib/runner.html.
+ After this change we only have 4 remaining foreign content failures.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+
+2010-07-12 Zhenyao Mo <zmo@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Bring bufferData and clear to GLES2 compliant
+ https://bugs.webkit.org/show_bug.cgi?id=41574
+
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::bufferData): Call validateBufferDataUsage().
+ (WebCore::WebGLRenderingContext::clear): Check mask.
+ (WebCore::WebGLRenderingContext::validateBufferDataUsage): Check usage.
+ * html/canvas/WebGLRenderingContext.h: Declare validateBufferDataUsage.
+
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Unreviewed. Attempt to fix Chromium Windows build.
+
+ Always generate SVGNames and MathMLNames for all ports (to support HTML5)
+ https://bugs.webkit.org/show_bug.cgi?id=42050
+
+ Another way to fix this might be to mark all the .in files with
+ svn:eol=native. But fixing the perl to be more robust against
+ stray whitespace seems to be a better long-term fix.
+
+ No functional change, thus no tests.
+
+ * bindings/scripts/InFilesParser.pm:
+
+2010-07-12 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove dependency on PlatformString.h in Color.h
+ https://bugs.webkit.org/show_bug.cgi?id=42109
+
+ * platform/graphics/Color.cpp:
+ * platform/graphics/Color.h:
+
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Unreviewed, build fix.
+
+ Update HTMLTreeBuilder now that MathMLNames is always generated
+ https://bugs.webkit.org/show_bug.cgi?id=42059
+
+ Fix the Windows project file to build MathMLNames.*.
+ Also added MathMLElementFactory.* which is a NOOP now, but will
+ prevent folks from breaking the build when they turn MathML on.
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2010-07-12 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Update media element's handling of empty 'src' attribute
+ https://bugs.webkit.org/show_bug.cgi?id=42001
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::src): Return getNonEmptyURLAttribute().
+ (WebCore::HTMLMediaElement::selectMediaResource): Call noneSupported() for empty 'src'.
+ (WebCore::HTMLMediaElement::selectNextSourceChild): Use getNonEmptyURLAttribute() to convert
+ 'src' to URL instead of document()->completeURL(). Don't consider a <source> with an empty 'src'.
+
+ * html/HTMLMediaElement.idl: Add 'NonEmpty' option to 'src' attribute.
+
+ * html/HTMLSourceElement.cpp:
+ (WebCore::HTMLSourceElement::src): Return getNonEmptyURLAttribute().
+ (WebCore::HTMLSourceElement::isURLAttribute): New, 'src' is a URL attribute.
+ * html/HTMLSourceElement.h:
+
+ * html/HTMLSourceElement.idl: Add 'NonEmpty' option to 'src' attribute.
+
+ * html/HTMLVideoElement.cpp:
+ (WebCore::HTMLVideoElement::parseMappedAttribute): Use getNonEmptyURLAttribute() to convert
+ 'poster' to URL instead of document()->completeURL().
+
+ * html/HTMLVideoElement.idl: Add 'NonEmpty' option to 'poster' attribute.
+
+2010-07-12 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] make dist is broken because of missing headers and other miscellaneous reasons
+ https://bugs.webkit.org/show_bug.cgi?id=42107
+
+ * GNUmakefile.am: Remove InspectorFrontend2.idl from the list of IDL files, so
+ that it is not built into libWebCoreJS. Add missing header to the source list.
+ Make sure to distribute the new file: WebCore/inspector/CodeGeneratorInspector.pm.
+
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ HTMLTreeBuilder needs to support mixing SVG and MathML content
+ https://bugs.webkit.org/show_bug.cgi?id=42096
+
+ This is just a direct transcription of another paragraph of the
+ HTML5 spec.
+
+ This improved a couple results in html5lib/runner.html, but more
+ work to do yet to pass all the foreign content tests.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processUsingSecondaryInsertionModeAndAdjustInsertionMode):
+ * html/HTMLTreeBuilder.h:
+ * mathml/mathtags.in:
+
+2010-07-12 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Update HTMLTreeBuilder now that MathMLNames is always generated
+ https://bugs.webkit.org/show_bug.cgi?id=42059
+
+ Fix the HTMLTreeBuilder MathML code path to compile and remove
+ the MathML and SVG guards now that SVGNames and MathMLNames are
+ always compiled into ever port after:
+ https://bugs.webkit.org/show_bug.cgi?id=42050
+
+ This fixed a whole bunch of libhtml5 tests now that we have the
+ mathml code paths enabled.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ * page/Frame.cpp:
+ (WebCore::Frame::Frame):
+ - Always init SVGNames and MathML names.
+
+2010-07-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Don't go into compositing mode for 0x0 plugins
+ https://bugs.webkit.org/show_bug.cgi?id=34009
+
+ Don't use compositing for small (0-height or width, or 1x1) plugins, or iframes whose
+ height or width is zero.
+
+ Previously we made all compositing decisions inside styleChanged(). However,
+ now that plugin and iframe compositing behavior depends on renderer size, we have
+ to wait until layout before deciding whether to composite these. This behavior
+ change is controlled by the m_compositingDependsOnGeometry flag. When set,
+ updateCompositingLayers() always does a hierarchy update.
+
+ Tests: compositing/iframes/iframe-size-from-zero.html
+ compositing/iframes/iframe-size-to-zero.html
+ compositing/plugins/1x1-composited-plugin.html
+ compositing/plugins/large-to-small-composited-plugin.html
+ compositing/plugins/small-to-large-composited-plugin.html
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateCompositingLayers): No longer bail if usesCompositing() is false; we
+ have to always enter updateCompositingLayers().
+ (WebCore::FrameView::repaintFixedElementsAfterScrolling): Ditto
+ (WebCore::FrameView::enterCompositingMode): Remove bogus return of a void.
+
+ * rendering/RenderLayerCompositor.h: Add m_compositingDependsOnGeometry.
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::RenderLayerCompositor): Initialize m_compositingDependsOnGeometry to false.
+ (WebCore::RenderLayerCompositor::updateCompositingLayers): If m_compositingDependsOnGeometry is true,
+ we always need to run through the layer hierarchy looking for things which need to be composited, even if
+ we're not (yet) in compositing mode.
+
+ (WebCore::RenderLayerCompositor::computeCompositingRequirements): Because we can enter compositing mode
+ on the fly inside updateCompositingLayers() now, the state of willBeComposited needs to be updated
+ when processing the root layer, for the case where the compositing mode changes.
+
+ (WebCore::RenderLayerCompositor::requiresCompositingForPlugin): Set the m_compositingDependsOnGeometry
+ flag if we see a potentially-composited plugin. Once we have layout information, only composite the plugin
+ if height * width > 1.
+
+ (WebCore::RenderLayerCompositor::requiresCompositingForIFrame): Set the m_compositingDependsOnGeometry
+ flag if we see a potentially-composited iframe. Once we have layout information, only composite the plugin
+ if height or width is greater than zero.
+
+2010-07-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Need to do a layout when RenderLayers come and go because of compositing
+ https://bugs.webkit.org/show_bug.cgi?id=42108
+
+ If we create or destroy RenderLayers for reasons other than style changes
+ (e.g. because of composited iframes or plugins), then we need to ensure
+ that we do a layout.
+
+ Test: compositing/iframes/layout-on-compositing-change.html
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::adjustStyleDifference):
+
+2010-07-11 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Always generate SVGNames and MathMLNames for all ports (to support HTML5)
+ https://bugs.webkit.org/show_bug.cgi?id=42050
+
+ Historically, FOONames has only been generate when ENABLE(FOO) is defined.
+ However, for HTML5 parser support, we need to have access to the SVG
+ and MathML tag names regardless of whether we the engine is configured
+ to render SVG or MathML content.
+
+ This change enables generation of SVGNames and MathMLNames on all ports and
+ makes it so that ports can include FOOElementFactory.* regardless of whether
+ ENABLE(FOO) is defined (and have it do the right thing).
+
+ No functional change (yet) so no tests.
+
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.gyp/WebCore.gyp:
+ * WebCore.pri:
+ * dom/make_names.pl:
+
+2010-07-10 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ make_names.pl should always generate all names in Names.* files
+ https://bugs.webkit.org/show_bug.cgi?id=42023
+
+ Only the *ElementFactory files need to have conditional contents
+ based on enabled features. WebCore should always have all known
+ names for SVG, MathML, XML, XLink, HTML, etc. generated in the
+ various *Names files, even if features are disabled.
+
+ make_names.pl is kinda a big hack at this point. I tried to clean
+ up a little as I went. The way I made *Names include all names was to
+ read the .in files twice, once using the preprocessor and once without.
+
+ * dom/make_names.pl:
+
+2010-07-12 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Oliver Hunt.
+
+ Canvas: Move fillRect() save/restore into GraphicsContext implementations
+ https://bugs.webkit.org/show_bug.cgi?id=42088
+
+ Saving the platform painter state is an expensive operation,
+ so don't do it in fillRect() for platforms that don't need it. (CG, Qt)
+
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::fillRect):
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/wince/GraphicsContextWince.cpp:
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/wx/GraphicsContextWx.cpp:
+ (WebCore::GraphicsContext::fillRect):
+
+2010-07-12 Nate Chapin <japhet@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Ensure that a cache policy that forces validation is cleared once
+ the load event is fired, rather than only doing so at the next
+ navigation. This leads to a lot of unnecessary load on AJAX-y
+ websites.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41813
+
+ Test: http/tests/xmlhttprequest/cache-headers-after-reload.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::handledOnloadEvents): Reset m_loadType to FrameLoadTypeStandard.
+ (WebCore::FrameLoader::addExtraFieldsToRequest): Only respect the original request's cache policy if the
+ DocumentLoader is still loading, and handle the other cache policy settings that were scattered around the loader.
+ (WebCore::FrameLoader::loadResourceSynchronously): Merge cachePolicy setting into FrameLoader::addExtraFieldsToRequest.
+ * loader/SubresourceLoader.cpp:
+ (WebCore::SubresourceLoader::create): Merge cachePolicy setting into FrameLoader::addExtraFieldsToRequest.
+
+2010-07-12 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Oliver Hunt.
+
+ CSS color parsing optimizations
+ https://bugs.webkit.org/show_bug.cgi?id=42073
+
+ - Avoid instantiating a CSSParser in parseColor() unless necessary.
+ - Fixed hex color fast-path to support strings starting with '#'.
+ - Avoid allocating a new string for the value part of a '#' color.
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseColor):
+ * platform/graphics/Color.cpp:
+ (WebCore::Color::parseHexColor):
+ (WebCore::Color::Color):
+ * platform/graphics/Color.h:
+
+2010-07-09 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13075
+ XMLHttpRequest with failed authentication should set status to 401
+
+ https://bugs.webkit.org/show_bug.cgi?id=6871
+ <rdar://problem/3363403> 401 error page is never shown
+
+ * platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::receivedCredential):
+ Added a comment explaining why we handle empty credentials differently here.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp: (WebCore::ResourceHandle::receivedCredential):
+ Bring this code in sync with Mac.
+
+2010-07-12 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Add a PluginController class, use it for invalidation and getting the user agent
+ https://bugs.webkit.org/show_bug.cgi?id=42084
+
+ * WebCore.exp.in:
+ Export Widget::convertToContainingWindow.
+
+2010-07-12 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Dragging within webkit with a drag created via Javascript ends up misinterpreting the data
+ https://bugs.webkit.org/show_bug.cgi?id=41457
+
+ Treat non-special-cased mime-types as Unicode strings in ClipboardQt's getData()
+ Fixes corruption when retrieving data that was set with anything other than text/plain
+
+ Also use QMimeData::setHtml() when applicable to be consistent with PasteboardQt.
+
+ * platform/qt/ClipboardQt.cpp:
+ (WebCore::isHtmlMimeType):
+ (WebCore::ClipboardQt::getData):
+ (WebCore::ClipboardQt::setData):
+
+2010-07-12 Steve Block <steveblock@google.com>
+
+ Reviewed by Jeremy Orlow.
+
+ add ANDROID to STORE_FONT_CUSTOM_PLATFORM_DATA
+ https://bugs.webkit.org/show_bug.cgi?id=32273
+
+ Tested by existing tests, just adding ANDROID to the list of platforms that use this feature.
+
+ * loader/CachedFont.cpp:
+
+2010-07-12 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Unreviewed.
+
+ [EFL] Move ScriptConcotrollerEfl.cpp from CMakeLists.txt to
+ CMakeListsEfl.txt.
+
+ * CMakeLists.txt:
+ * CMakeListsEfl.txt:
+
+2010-07-12 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Unreviewed build fix after r60050.
+
+ * CMakeLists.txt: Add WebCore/bindings to the include path.
+
+2010-07-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Crashes when going back with page cache in unknown circunstances
+ https://bugs.webkit.org/show_bug.cgi?id=41710
+
+ Could not yet find a way to reproduce this in a layout test. The
+ issue is document being NULL, so this NULL-check should be enough
+ to get rid of the crash. We are working on trying to find a better
+ solution for these null cases, like attaching the document earlier
+ when openning a cached page.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::sendScrollEvent):
+
+2010-07-12 Alexander Pavlov <apavlov@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ [Chromium] Crash when stepping on a breakpoint while debugging Web Inspector
+ https://bugs.webkit.org/show_bug.cgi?id=41958
+
+ * page/PageGroupLoadDeferrer.cpp:
+ (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
+ * page/PageGroupLoadDeferrer.h:
+
+2010-07-12 François Sausset <sausset@gmail.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Make the mathsize MathML attribute handle values in em, px, pt,...
+ https://bugs.webkit.org/show_bug.cgi?id=42067
+
+ Test: mathml/presentation/attributes.xhtml
+
+ * css/mathml.css:
+ (math[mathsize="small"], mstyle[mathsize="small"], mo[mathsize="small"], mn[mathsize="small"], mi[mathsize="small"], mtext[mathsize="small"], mspace[mathsize="small"], ms[mathsize="small"]):
+ (math[mathsize="normal"], mstyle[mathsize="normal"], mo[mathsize="normal"], mn[mathsize="normal"], mi[mathsize="normal"], mtext[mathsize="normal"], mspace[mathsize="normal"], ms[mathsize="normal"]):
+ (math[mathsize="big"], mstyle[mathsize="big"], mo[mathsize="big"], mn[mathsize="big"], mi[mathsize="big"], mtext[mathsize="big"], mspace[mathsize="big"], ms[mathsize="big"]):
+ * mathml/MathMLElement.cpp:
+ (WebCore::MathMLElement::parseMappedAttribute):
+
+2010-07-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix compilation with sealed GTK+.
+
+ * platform/gtk/GtkVersioning.h:
+ * platform/gtk/PasteboardHelper.cpp:
+ (WebCore::PasteboardHelper::fillDataObjectFromDropData):
+
+2010-07-12 François Sausset <sausset@gmail.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Fix a bug preventing msqrt and mfrac to use style color to draw themselves.
+ In mfrac, the fraction bar is now using the color defined by the element style instead of black.
+ In msqrt, the radical was always drawn in black due to a colorSpace problem.
+ https://bugs.webkit.org/show_bug.cgi?id=41889
+
+ Test: mathml/presentation/roots.xhtml
+ Test: mathml/presentation/fractions.xhtml
+
+ * mathml/RenderMathMLFraction.cpp:
+ (WebCore::RenderMathMLFraction::paint):
+ * mathml/RenderMathMLSquareRoot.cpp:
+ (WebCore::RenderMathMLSquareRoot::paint):
+
+2010-07-12 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Antti Koivisto.
+
+ Canvas: arc() with startAngle == endAngle shouldn't add to the path
+ https://bugs.webkit.org/show_bug.cgi?id=41420
+
+ Spec link:
+ http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-stroke
+
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::arc):
+
+2010-07-12 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Reviewed by Ojan Vafai.
+
+ Update padding on Windows?
+ https://bugs.webkit.org/show_bug.cgi?id=38016
+
+ Remove internal padding and add 1px vertical padding for Windows.
+
+ * css/themeWin.css:
+ (input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button):
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::setupInnerStyle):
+ * rendering/RenderTheme.h:
+ * rendering/RenderThemeWin.cpp:
+ * rendering/RenderThemeWin.h:
+ * rendering/RenderThemeWince.cpp:
+ * rendering/RenderThemeWince.h:
+
+2010-07-12 Pavel Feldman <pfeldman@chromium.org>
+
+ Not reviewed. Chromium tests fix.
+
+ [Chromium, V8] r63057 regressed url tests.
+
+ https://bugs.webkit.org/show_bug.cgi?id=42063
+
+ * bindings/scripts/CodeGeneratorV8.pm:
+
+2010-07-12 Steve Block <steveblock@google.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ XPath substring function does not correctly handle non-positive values for the position argument
+ https://bugs.webkit.org/show_bug.cgi?id=41913
+
+ This patch changes the behavior of the XPath evaluate function when a non-positive
+ position argument is supplied and no length argument is supplied. In this case,
+ we reset the position to 1. This follows the spec and matches the current behaviour
+ when a length argument is supplied.
+
+ Test: fast/xpath/substring-non-positive-postion.html
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunSubstring::evaluate):
+
+2010-06-27 Jeremy Orlow <jorlow@chromium.org>
+
+ Reviewed by Dumitru Daniliuc.
+
+ Implement IDBObjectStore.get/set/remove
+ https://bugs.webkit.org/show_bug.cgi?id=41250
+
+ Implement these functions in IDBObjectStore,
+ add plumbing, teach IDBAny/Callbacks how to deal
+ with IDBKey, and a few small bits of cleanup.
+
+ Test: Modified existing test to provide basic coverage.
+ Will add much more extensive layout test coverage
+ in future patches.
+
+ * Android.derived.jscbindings.mk:
+ * Android.derived.v8bindings.mk:
+ * Android.jscbindings.mk:
+ * Android.mk:
+ * Android.v8bindings.mk:
+ * CMakeLists.txt:
+ * WebCore.gypi:
+ * WebCore.pri:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSIDBAnyCustom.cpp:
+ (WebCore::toJS):
+ * bindings/v8/custom/V8IDBAnyCustom.cpp:
+ (WebCore::toV8):
+ * storage/IDBAny.cpp:
+ (WebCore::IDBAny::idbKey):
+ (WebCore::IDBAny::set):
+ * storage/IDBAny.h:
+ (WebCore::IDBAny::):
+ * storage/IDBAny.idl:
+ * storage/IDBCallbacks.h:
+ * storage/IDBDatabaseRequest.h:
+ * storage/IDBDatabaseRequest.idl:
+ * storage/IDBKeyRange.h:
+ * storage/IDBObjectStore.h:
+ (WebCore::IDBObjectStore::):
+ * storage/IDBObjectStoreImpl.cpp:
+ (WebCore::IDBObjectStoreImpl::IDBObjectStoreImpl):
+ (WebCore::IDBObjectStoreImpl::get):
+ (WebCore::IDBObjectStoreImpl::set):
+ (WebCore::IDBObjectStoreImpl::remove):
+ * storage/IDBObjectStoreImpl.h:
+ * storage/IDBObjectStoreRequest.cpp:
+ (WebCore::IDBObjectStoreRequest::get):
+ (WebCore::IDBObjectStoreRequest::add):
+ (WebCore::IDBObjectStoreRequest::modify):
+ (WebCore::IDBObjectStoreRequest::addOrModify):
+ (WebCore::IDBObjectStoreRequest::remove):
+ * storage/IDBObjectStoreRequest.h:
+ * storage/IDBObjectStoreRequest.idl:
+ * storage/IDBRequest.cpp:
+ (WebCore::IDBRequest::onSuccess):
+ * storage/IDBRequest.h:
+
+2010-07-11 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Implement animation-related methods for WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=42053
+
+ * WebCore.exp.in: Export Document::getElementById for WebKit2's benefit.
+
+2010-07-11 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel
+
+ Add a complete list of the HTML5 entities in JSON format.
+
+ * html/HTMLEntityNames.json: Added.
+
+2010-07-11 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] WebKitWebView should support drops
+ https://bugs.webkit.org/show_bug.cgi?id=39843
+
+ Add support for dropping content onto GTK+ WebViews.
+
+ No new tests, as the DRT does not support simulating drops yet.
+
+ * platform/gtk/ClipboardUtilitiesGtk.cpp:
+ (WebCore::dragOperationToGdkDragAction): Added.
+ (WebCore::gdkDragActionToDragOperation): Properly detect DragOperationEvery.
+ * platform/gtk/ClipboardUtilitiesGtk.h: Add declaration for dragOperationToGdkDragAction.
+ * platform/gtk/PasteboardHelper.cpp:
+ Add new target atom and rename the markup target type to match the others.
+ Add a method which fills a data object from drop data.
+ (WebCore::PasteboardHelper::initializeTargetList): Add support for new atoms.
+ (WebCore::selectionDataToUTF8String): Added this helper.
+ (WebCore::PasteboardHelper::getClipboardContents): Use the selectionDataToUTF8String helper.
+ (WebCore::PasteboardHelper::targetListForDataObject): Change to reflect markup atom rename.
+ (WebCore::PasteboardHelper::fillDataObjectFromDropData): Added.
+ (WebCore::PasteboardHelper::dropAtoms): Added.
+ * platform/gtk/PasteboardHelper.h: Add declarations of new methods.
+
+2010-07-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Enhance content attribute reflection for URL attributes, including adding a non-empty option
+ https://bugs.webkit.org/show_bug.cgi?id=42040
+
+ Test: fast/dom/URL-attribute-reflection.html
+
+ Changed syntax from [ReflectURL] to [Reflect,URL] and also added support for
+ a new option, NonEmpty, which implements the non-empty URL concept from the
+ HTML5 specification.
+
+ * bindings/scripts/CodeGenerator.pm: Changed code to expect the Reflect and URL
+ extended attributes to come in separately. The URL one simply means "the string
+ of this attribute is a URL", since we don't have a distinct type for URL. Also
+ added a new NonEmpty extended attribute.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Removed now-unneeded code to handle ReflectURL.
+ * bindings/scripts/CodeGeneratorV8.pm: Ditto.
+
+ * bindings/scripts/test/CPP/WebDOMTestObj.cpp: Updated for new added test cases
+ and the fix I made to the reflectedCustomURLAttr test.
+ * bindings/scripts/test/CPP/WebDOMTestObj.h: Ditto.
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp: Ditto.
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.h: Ditto.
+ * bindings/scripts/test/JS/JSTestObj.cpp: Ditto.
+ * bindings/scripts/test/JS/JSTestObj.h: Ditto.
+ * bindings/scripts/test/ObjC/DOMTestObj.h: Ditto.
+ * bindings/scripts/test/ObjC/DOMTestObj.mm: Ditto.
+ * bindings/scripts/test/V8/V8TestObj.cpp: Ditto. Also, for some reason the V8
+ bindig writes out the keywords into the generated file as comments, so the keyword
+ change had a direct efffect on the output file.
+
+ * bindings/scripts/test/TestObj.idl: Changed the test cases for ReflectURL to use
+ the new syntax. Added test cases for NonEmpty. Fixed the name of
+ reflectedNonEmptyURLAttr, which accidentally was repeating reflectedURLAttr
+ instead; never noticed because we never compile the test output.
+
+ * dom/Element.cpp:
+ (WebCore::Element::getNonEmptyURLAttribute): Added. For use by NonEmpty and also
+ by any code that wants to implement the non-empty URL content attribute semantic.
+ * dom/Element.h: Ditto.
+
+ * html/HTMLAnchorElement.idl: Use Reflect,URL instead of ReflectURL.
+ * html/HTMLAreaElement.idl: Ditto.
+ * html/HTMLFrameElement.idl: Ditto.
+ * html/HTMLImageElement.idl: Ditto.
+ * html/HTMLInputElement.idl: Ditto.
+ * html/HTMLLinkElement.idl: Ditto.
+ * html/HTMLMediaElement.idl: Ditto.
+ * html/HTMLObjectElement.idl: Ditto.
+ * html/HTMLScriptElement.idl: Ditto.
+ * html/HTMLVideoElement.idl: Ditto.
+
+2010-07-10 Tony Gentilcore <tonyg@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Add missing derrived sources to xcode project
+ https://bugs.webkit.org/show_bug.cgi?id=42034
+
+ This allows --web-timing to work with build-webkit on OSX with JSC.
+ This should have been done in bug 41442.
+
+ No new tests because no new functionality.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-10 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Don't initialize plug-ins until allowed by the page
+ https://bugs.webkit.org/show_bug.cgi?id=42033
+
+ * WebCore.exp.in:
+ Export Document::addMediaCanStartListener and Document::removeMediaCanStartListener.
+
+2010-07-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=42021
+ isEqualNode should work for DocumentType nodes
+
+ Test: fast/dom/Node/isEqualNode.html
+
+ * dom/Node.cpp:
+ (WebCore::Node::isEqualNode): Add DocumentType logic from the DOM3 spec.
+
+2010-07-10 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Adam Barth.
+
+ Move enum ReasonForCallingCanExecuteScripts to header ScriptControllerBase.h
+ https://bugs.webkit.org/show_bug.cgi?id=39339
+
+ Moved the enum ReasonForCallingCanExecuteScripts, which was
+ defined in both the JSC and V8 ScriptController.h file, into
+ a shared file called ScriptControllerBase.h.
+
+ No functionality was changed, so no new tests.
+
+ * GNUmakefile.am: Added file bindings/ScriptControllerBase.h.
+ * WebCore.gypi: Ditto.
+ * WebCore.pro: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.vcproj/WebCoreCommon.vsprops: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * bindings/ScriptControllerBase.h: Added.
+ (WebCore::):
+ * bindings/js/ScriptController.h: #include ScriptControllerBase.h
+ * bindings/v8/ScriptController.h: Ditto.
+
+2010-07-10 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ <rdar://problem/8153214> Continuation outlines in layers do not paint correctly
+
+ Test: fast/inline/continuation-outlines-with-layers-2.html
+
+ Continuation outlines are normally painted by the containing block. However, when the
+ block and the inline are not enclosed by the same self-painting layer, the inline has to
+ paint its own outlines. This was handled correctly only for the case where the inline had
+ its own self-painting layer, but now when an ancestor inline had the self-painting layer.
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paint): Instead of testing for having a self-painting layer, test
+ whether any intermediate box between the inline and the containing block has a self-painting
+ layer.
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintObject): Ditto.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::enclosingBoxModelObject): Added this utility method.
+ * rendering/RenderObject.h:
+
+2010-07-10 François Sausset <sausset@gmail.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Build fix: syntax and typo issues
+ https://bugs.webkit.org/show_bug.cgi?id=41859
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+
+2010-07-10 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ HTMLTreeBuilder needs adjustForeignAttributes support
+ https://bugs.webkit.org/show_bug.cgi?id=42022
+
+ To add adjust foreign attributes support I had to add an
+ AtomicString (prefixed name) to QualifiedName hash. Once I had
+ done that, I decided it would be best for the other "adjust" functions
+ to share the same hash logic, so I moved them to using the same
+ AtomicString -> QualifiedName hash as well.
+
+ Tested by html5lib/runner.html
+
+ * dom/Attribute.h:
+ (WebCore::Attribute::parserSetName):
+ * html/HTMLTreeBuilder.cpp:
+
+2010-07-10 Rob Buis <rwlbuis@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41978
+ Remove namespace prefixes from idl files
+
+ No new tests, idl syntax fixes.
+
+ * css/CSSImportRule.idl:
+ * css/CSSMediaRule.idl:
+ * css/CSSStyleSheet.idl:
+ * css/CSSVariablesRule.idl:
+ * svg/SVGAnimatedString.idl:
+ * svg/SVGColor.idl:
+ * svg/SVGDocument.idl:
+ * svg/SVGLangSpace.idl:
+ * svg/SVGSVGElement.idl:
+ * svg/SVGStringList.idl:
+ * svg/SVGStylable.idl:
+ * svg/SVGStyleElement.idl:
+ * svg/SVGTests.idl:
+ * svg/SVGZoomEvent.idl:
+ * xml/XPathEvaluator.idl:
+
+2010-07-10 Dumitru Daniliuc <dumi@chromium.org>
+
+ Unreviewed, GTK build fix.
+
+ * bindings/gobject/GObjectEventListener.h:
+
+2010-07-10 Dumitru Daniliuc <dumi@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Remove unnecessary includes in header files in WebCore/dom.
+ https://bugs.webkit.org/show_bug.cgi?id=41941
+
+ * css/StyleMedia.h:
+ * dom/BeforeLoadEvent.h:
+ * dom/CustomEvent.h:
+ * dom/DOMStringMap.h:
+ * dom/DeviceOrientationEvent.h:
+ * dom/EventListener.h:
+ * dom/MessagePort.h:
+ * dom/Node.cpp:
+ * dom/NodeFilter.h:
+ * dom/NodeRareData.h:
+ * dom/RegisteredEventListener.h:
+ * dom/SelectorNodeList.cpp:
+ * dom/SelectorNodeList.h:
+ * dom/StyleElement.h:
+ * dom/Traversal.h:
+
+2010-07-09 Tony Chang <tony@chromium.org>
+
+ Reviewed by Ojan Vafai.
+
+ crash in WebCore::CompositeEditCommand::splitTreeToNode when indenting pre
+ https://bugs.webkit.org/show_bug.cgi?id=38231
+
+ Test: editing/execCommand/indent-pre.html
+
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::countParagraphs):
+ (WebCore::IndentOutdentCommand::indentRegion): Split text nodes into one node per paragraph
+ so moveParagraph doesn't get confused.
+ (WebCore::IndentOutdentCommand::splitTextNodes):
+ * editing/IndentOutdentCommand.h:
+
+2010-07-09 Erik Arvidsson <arv@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Computed style is not implemented for padding-start, padding-end, margin-start, margin-end
+ https://bugs.webkit.org/show_bug.cgi?id=41496
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSProperty.cpp:
+ (WebCore::CSSProperty::resolveDirectionAwareProperty): This function resolves the property ID for a direction aware property.
+ * css/CSSProperty.h:
+ * css/CSSStyleSelector.cpp: Use helper function.
+ (WebCore::CSSStyleSelector::applyProperty):
+
+2010-07-09 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ HTML5 tree builder should pass some LayoutTests
+ https://bugs.webkit.org/show_bug.cgi?id=41991
+
+ Before this patch, we weren't attaching text nodes to the render tree,
+ which turns out to be important. :)
+
+ This patch fixes more than 10,000 LayoutTests.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::attach):
+ (WebCore::HTMLConstructionSite::attachAtSite):
+
+2010-07-09 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Darin Adler.
+
+ [WINCE] Buildfix for TextEncodingRegistry
+ https://bugs.webkit.org/show_bug.cgi?id=41992
+
+ Renamed TextCodecWince to TextCodecWinCE.
+
+ * platform/text/TextEncodingRegistry.cpp:
+ (WebCore::buildBaseTextCodecMaps):
+ (WebCore::extendTextCodecMaps):
+
+2010-07-09 Leon Clarke <leonclarke@google.com>
+
+ Reviewed by Adam Barth.
+
+ add support for link prefetching
+ https://bugs.webkit.org/show_bug.cgi?id=3652
+
+ Test: fast/dom/HTMLLinkElement/prefetch.html
+
+ * Configurations/FeatureDefines.xcconfig:
+ * html/HTMLLinkElement.cpp:
+ (WebCore::HTMLLinkElement::tokenizeRelAttribute):
+ (WebCore::HTMLLinkElement::process):
+ * html/HTMLLinkElement.h:
+ (WebCore::HTMLLinkElement::RelAttribute::RelAttribute):
+ * loader/Cache.cpp:
+ (WebCore::createResource):
+ * loader/CachedResource.cpp:
+ (WebCore::CachedResource::data):
+ (WebCore::CachedResource::didAddClient):
+ * loader/CachedResource.h:
+ (WebCore::CachedResource::):
+ (WebCore::CachedResource::error):
+ (WebCore::CachedResource::isPrefetch):
+ (WebCore::CachedResource::schedule):
+ * loader/CachedScript.cpp:
+ * loader/CachedScript.h:
+ * loader/DocLoader.cpp:
+ (WebCore::DocLoader::requestLinkPrefetch):
+ (WebCore::DocLoader::canRequest):
+ (WebCore::DocLoader::incrementRequestCount):
+ (WebCore::DocLoader::decrementRequestCount):
+ * loader/DocLoader.h:
+ * loader/loader.cpp:
+ (WebCore::cachedResourceTypeToTargetType):
+ (WebCore::Loader::determinePriority):
+ (WebCore::Loader::load):
+ (WebCore::Loader::Host::servePendingRequests):
+ (WebCore::Loader::Host::didFinishLoading):
+ (WebCore::Loader::Host::didFail):
+ (WebCore::Loader::Host::didReceiveResponse):
+ (WebCore::Loader::Host::cancelPendingRequests):
+ * loader/loader.h:
+ (WebCore::Loader::):
+ * platform/network/ResourceRequestBase.h:
+ (WebCore::ResourceRequestBase::):
+
+2010-07-09 James Robinson <jamesr@chromium.org>
+
+ Unreviewed build fix. Add #include to pick up ExceptionCode values for config (like Qt) where it's not picked up indirectly.
+
+ * html/HTMLCanvasElement.cpp:
+
+2010-07-09 James Robinson <jamesr@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Removes CanvasSurface and moves all of its functionality to HTMLCanvasElement.
+ https://bugs.webkit.org/show_bug.cgi?id=42005
+
+ http://trac.webkit.org/changeset/55201 introduced a new base class for HTMLCanvasElement called CanvasSurface.
+ The intention was that this would allow for code sharing with the then-proposed OffscreenCanvas. However,
+ there is no OffscreenCanvas and there's unlikely to be one soon. Additionally CanvasSurface breaks
+ encapsulation pretty badly by doing "static_cast<HTMLCanvasElement* const>(this)". Until an abstraction is
+ really needed we should just use HTMLCanvasElement when we want to talk about a canvas.
+
+ This patch moves all of CanvasSurface's functionality back up to HTMLCanvasElement and reorders the header
+ to be a bit more logical.
+
+ Refactor with no behavior change, thus no new tests.
+
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/CanvasSurface.cpp: Removed.
+ * dom/CanvasSurface.h: Removed.
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::HTMLCanvasElement):
+ (WebCore::HTMLCanvasElement::willDraw):
+ (WebCore::HTMLCanvasElement::setSurfaceSize):
+ (WebCore::HTMLCanvasElement::toDataURL):
+ (WebCore::HTMLCanvasElement::convertLogicalToDevice):
+ (WebCore::HTMLCanvasElement::securityOrigin):
+ (WebCore::HTMLCanvasElement::styleSelector):
+ (WebCore::HTMLCanvasElement::createImageBuffer):
+ (WebCore::HTMLCanvasElement::drawingContext):
+ (WebCore::HTMLCanvasElement::buffer):
+ (WebCore::HTMLCanvasElement::baseTransform):
+ * html/HTMLCanvasElement.h:
+ (WebCore::HTMLCanvasElement::setObserver):
+ (WebCore::HTMLCanvasElement::width):
+ (WebCore::HTMLCanvasElement::height):
+ (WebCore::HTMLCanvasElement::size):
+ (WebCore::HTMLCanvasElement::toDataURL):
+ (WebCore::HTMLCanvasElement::setOriginTainted):
+ (WebCore::HTMLCanvasElement::originClean):
+ (WebCore::HTMLCanvasElement::hasCreatedImageBuffer):
+
+2010-07-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Calling layoutTestController.layerTreeAsText() should update layout
+ https://bugs.webkit.org/show_bug.cgi?id=41818
+
+ Need to call updateLayout() before we check for any layers, not after,
+ since layout will update compositing, and may create layers.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::layerTreeAsText):
+
+2010-07-09 Kenneth Russell <kbr@google.com>
+
+ Reviewed by Nate Chapin.
+
+ bufferSubData causes crash in WebGLBuffer::associateBufferSubData
+ https://bugs.webkit.org/show_bug.cgi?id=42004
+
+ Test: fast/canvas/webgl/index-validation-crash-with-buffer-sub-data.html
+
+ * html/canvas/WebGLBuffer.cpp:
+ (WebCore::WebGLBuffer::associateBufferData):
+ - Allocate m_elementArrayBuffer for entry point taking only size.
+ Guard against allocation failures of m_elementArrayBuffer.
+ (WebCore::WebGLBuffer::associateBufferSubData):
+ - Guard against any possibility of crashes due to m_elementArrayBuffer being NULL.
+
+2010-07-09 Dumitru Daniliuc <dumi@chromium.org>
+
+ Unreviewed, but pre-approved by Eric Seidel.
+
+ Remove unnecessary includes in header files in WebCore/css.
+ https://bugs.webkit.org/show_bug.cgi?id=41941
+
+ * css/CSSComputedStyleDeclaration.h:
+ * css/CSSFontFaceSource.cpp:
+ (WebCore::CSSFontFaceSource::getFontData):
+ * css/CSSFontFaceSource.h:
+ * css/CSSPrimitiveValueMappings.h:
+ * css/StyleMedia.h:
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Get rid of manual case maps in HTMLTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=42000
+
+ No functional change, thus no tests.
+
+ * html/HTMLTreeBuilder.cpp:
+
+2010-07-09 Tony Gentilcore <tonyg@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Implement performance.timing.navigationStart
+ https://bugs.webkit.org/show_bug.cgi?id=41815
+
+ See: http://dev.w3.org/2006/webapi/WebTiming/#nt-navigation-start
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadWithDocumentLoader):
+ * loader/FrameLoaderTypes.h:
+ (WebCore::FrameLoadTimeline::FrameLoadTimeline):
+ * page/Timing.cpp:
+ (WebCore::Timing::navigationStart):
+
+2010-07-09 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] GraphicsLayerQt must have syncCompositingStateForThisLayerOnly() implemented
+ https://bugs.webkit.org/show_bug.cgi?id=41954
+
+ Add GraphicsLayerQt::syncCompositingStateForThisLayerOnly, a non-recursive
+ implementation of GraphicsLayerQt::syncCompositingState and which targets
+ the current layer only.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::GraphicsLayerQt::syncCompositingStateForThisLayerOnly):
+ * platform/graphics/qt/GraphicsLayerQt.h:
+
+2010-07-09 David Kozub <zub@linux.fjfi.cvut.cz>
+
+ Reviewed by Darin Adler.
+
+ Fix build by adding missing html/TimeRanges.idl to CMakeLists.txt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41945
+
+ No functional changes, thus no tests.
+
+ * CMakeLists.txt:
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix SVG tag name casing for HTMLTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41998
+
+ Tested by html5lib/runner.html
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::):
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Implement SVG attribute case mapping for HTMLTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41949
+
+ Tested by html5lib/runner.html.
+
+ * html/HTMLTreeBuilder.cpp:
+
+2010-07-09 Andy Estes <aestes@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Remove the workaround for a Core Animation bug on platforms where the
+ bug has been fixed.
+ https://bugs.webkit.org/show_bug.cgi?id=41927
+ <rdar://problem/7920153>
+
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): Add
+ a compile-time check for platforms that have a Core Animation bug that
+ needs working around.
+
+2010-07-08 Tony Gentilcore <tonyg@chromium.org>
+
+ Reviewed by Nate Chapin.
+
+ Implement unloadEventEnd, loadEventStart, and loadEventEnd for Web Timing
+ https://bugs.webkit.org/show_bug.cgi?id=41332
+
+ Test: fast/dom/webtiming.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::loadWithDocumentLoader):
+ * loader/FrameLoader.h:
+ (WebCore::FrameLoader::frameLoadTimeline):
+ * loader/FrameLoaderTypes.h:
+ (WebCore::FrameLoadTimeline::FrameLoadTimeline):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::dispatchLoadEvent):
+ * page/Timing.cpp:
+ (WebCore::Timing::navigationStart):
+ (WebCore::Timing::unloadEventEnd):
+ (WebCore::Timing::loadEventStart):
+ (WebCore::Timing::loadEventEnd):
+ * page/Timing.h:
+ * page/Timing.idl:
+
+2010-07-09 Dumitru Daniliuc <dumi@chromium.org>
+
+ Unreviewed, but pre-approved by Eric Seidel.
+
+ Remove all unnecessary includes from the header files in WebCore/accessibility/.
+ https://bugs.webkit.org/show_bug.cgi?id=41941
+
+ * accessibility/AXObjectCache.h:
+ * accessibility/AccessibilityListBox.cpp:
+ * accessibility/AccessibilityListBox.h:
+ * accessibility/AccessibilityMenuList.h:
+ * accessibility/mac/AccessibilityObjectWrapper.h:
+
+2010-07-09 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Kent Tamura.
+
+ [WINCE] Buildfix for EventHandlerWin
+ https://bugs.webkit.org/show_bug.cgi?id=41909
+
+ Use Clipboard.h instead of ClipboardWin.h on WinCE.
+
+ * page/win/EventHandlerWin.cpp:
+
+2010-07-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r62946.
+ http://trac.webkit.org/changeset/62946
+ https://bugs.webkit.org/show_bug.cgi?id=41965
+
+ AppCache inspector support should be enabled in WebKit ToT.
+ (Requested by pfeldman_ on #webkit).
+
+ * inspector/front-end/StoragePanel.js:
+ (WebInspector.StoragePanel):
+ (WebInspector.StoragePanel.prototype.reset):
+ (WebInspector.StoragePanel.prototype.addApplicationCache):
+
+2010-07-09 François Sausset <sausset@gmail.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Implement MathML mathcolor & mathbackground attributes
+ https://bugs.webkit.org/show_bug.cgi?id=41895
+
+ Test: mathml/presentation/attributes.xhtml
+
+ * dom/MappedAttributeEntry.h:
+ (WebCore::):
+ * mathml/MathMLElement.cpp:
+ (WebCore::MathMLElement::MathMLElement):
+ (WebCore::MathMLElement::mapToEntry):
+ (WebCore::MathMLElement::parseMappedAttribute):
+ * mathml/MathMLElement.h:
+ * mathml/mathattrs.in:
+
+2010-07-09 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by David Levin.
+
+ Fix characters with unicode-bidi-mirror property are not correctly
+ mirrored in Linux.
+ https://bugs.webkit.org/show_bug.cgi?id=41305
+
+ Since harfbuzz does not do mirroring, chromium should iterate each
+ character in the string and mirror it if needed before passing the
+ string to harfbuzz for shaping.
+
+ Test: fast/text/international/bidi-mirror-he-ar.html
+
+ * platform/graphics/chromium/FontLinux.cpp:
+ (WebCore::TextRunWalker::TextRunWalker):
+ (WebCore::TextRunWalker::~TextRunWalker):
+ (WebCore::TextRunWalker::mirrorCharacters):
+
+
+2010-07-09 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Instantiate Netscape plug-ins, pass geometry information to Plugin
+ https://bugs.webkit.org/show_bug.cgi?id=41960
+
+ * WebCore.exp.in:
+ Export ScrollView::contentsToWindow.
+
+2010-07-09 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Kent Tamura.
+
+ [WINCE] Buildfix for FrameWince after r47440
+ https://bugs.webkit.org/show_bug.cgi?id=41904
+
+ * page/wince/FrameWince.cpp: Added property svn:eol-style.
+ (WebCore::computePageRectsForFrame):
+ (WebCore::imageFromSelection):
+
+2010-07-09 Vitaly Repeshko <vitalyr@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ [v8] Call JS gc in a fresh context to avoid retaining the current one.
+ https://bugs.webkit.org/show_bug.cgi?id=41963
+ http://crbug.com/46571
+
+ * bindings/v8/ScriptController.cpp:
+ (WebCore::ScriptController::collectGarbage):
+
+2010-07-09 Kenneth Russell <kbr@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Crash with uniform array test
+ https://bugs.webkit.org/show_bug.cgi?id=36028
+
+ * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
+ (WebCore::vertexAttribAndUniformHelperf):
+ (WebCore::uniformHelperi):
+ (WebCore::uniformMatrixHelper):
+ - Fixed type tests and casting of incoming arrays.
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::getUniform):
+ - Fixed crash when null WebGLUniform is passed to getUniform.
+
+2010-07-09 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: text editing not spoken by VO on web view contenteditable textbox
+ https://bugs.webkit.org/show_bug.cgi?id=41912
+
+ Test: platform/mac/accessibility/selection-value-changes-for-aria-textbox.html
+
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::renderObjectIsObservable):
+
+2010-07-09 Michael Nordman <michaeln@google.com>
+
+ Reviewed by Dumitru Daniliuc.
+
+ Use class ProgressEvent when raising appcache related progress events and
+ set the 'total', 'loaded', and 'lengthComputable' attributes.
+ Also raise the final progress event with the 'total' and 'loaded' attribute
+ values are equal to one another to keep pace with the spec for this feature.
+ https://bugs.webkit.org/show_bug.cgi?id=37602
+
+ Test: http/tests/appcache/progress-counter.html
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::ApplicationCacheGroup):
+ (WebCore::ApplicationCacheGroup::didFinishLoadingManifest):
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):
+ (WebCore::ApplicationCacheGroup::startLoadingEntry):
+ (WebCore::CallCacheListenerTask::create):
+ (WebCore::CallCacheListenerTask::performTask):
+ (WebCore::CallCacheListenerTask::CallCacheListenerTask):
+ (WebCore::ApplicationCacheGroup::postListenerTask):
+ * loader/appcache/ApplicationCacheGroup.h:
+ (WebCore::ApplicationCacheGroup::postListenerTask):
+ * loader/appcache/ApplicationCacheHost.cpp:
+ (WebCore::ApplicationCacheHost::notifyDOMApplicationCache):
+ (WebCore::ApplicationCacheHost::stopDeferringEvents):
+ (WebCore::ApplicationCacheHost::dispatchDOMEvent):
+ * loader/appcache/ApplicationCacheHost.h:
+ (WebCore::ApplicationCacheHost::DeferredEvent::DeferredEvent):
+
+2010-07-09 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Bug 41340 - [GStreamer] Subtle race condition during seeks
+ https://bugs.webkit.org/show_bug.cgi?id=41340
+
+ * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+ (webKitWebSrcStop):
+ (webKitWebSrcNeedDataMainCb):
+ (webKitWebSrcNeedDataCb):
+ (webKitWebSrcEnoughDataMainCb):
+ (webKitWebSrcEnoughDataCb):
+ (webKitWebSrcSeekDataCb):
+ (StreamingClient::didFinishLoading):
+ Fix two subtle race conditions that can happen during seeks:
+ - The timeout callback could be called before the callback ID is
+ assigned to the instance private data. This causes the ID to
+ be set after the callback has finished and breaks all future
+ processing.
+ - The source must not go EOS while a seek is pending because
+ this confuses appsrc due to the different threads involved here.
+
+2010-07-09 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [Qt] Removed hard-coded enabled default of video support
+
+ Properly detect video/audio instead of defaulting to true.Properly detect video/audio instead of defaulting to true.Properly detect video/audio instead of defaulting to true.Properly detect video/audio instead of defaulting to true.
+
+ * WebCore.pri:
+
+2010-07-09 Ben Murdoch <benm@google.com>
+
+ Reviewed by Steve Block.
+
+ [Arm] Missing NaN check in XPath substring function
+ https://bugs.webkit.org/show_bug.cgi?id=41862
+
+ Test: fast/xpath/substring-nan-position.html
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunSubstring::evaluate): Add an isnan()
+ to the value returned from evaluating the position
+ argument and early out and return the empty string.
+
+2010-07-09 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [Qt] Prospective build fix.
+
+ Moved the media element detection from WebCore.pro into WebCore.pri, where
+ all the features are detected. This is also used by build-webkit to determine
+ the defaults, which may be the reason for the build breakage.
+
+ * WebCore.pri:
+ * WebCore.pro:
+
+2010-07-09 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [Qt] Re-enable support for QtMultimediaKit as backend for the media elements
+
+ Experimental support is re-enabled if QtMobility is available and the Qt
+ version is 4.7 or above.
+
+ * WebCore.pro:
+ * platform/graphics/MediaPlayer.cpp:
+ * platform/graphics/qt/MediaPlayerPrivateQt.cpp:
+ (WebCore::MediaPlayerPrivate::supportsType): Adapt to latest QtMultimediaKit API changes.
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
+ (WebCore::MediaPlayerPrivate::totalBytes):
+
+2010-07-09 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: do not show default tooltip when detailed network info is available.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41957
+
+ * English.lproj/localizedStrings.js:
+ * inspector/front-end/ResourcesPanel.js:
+ (WebInspector.ResourcesPanel):
+ (WebInspector.ResourcesPanel.prototype.reset):
+ (WebInspector.ResourcesPanel.prototype.showResource):
+ (WebInspector.ResourcesPanel.prototype._getPopoverAnchor):
+ (WebInspector.ResourcesPanel.prototype._showPopover):
+ (WebInspector.ResourceTimeCalculator.prototype.computeBarGraphLabels):
+
+2010-07-09 François Sausset <sausset@gmail.com>
+
+ Reviewed by Beth Dakin.
+
+ Correct the default font variant of mtext (regular instead of italic).
+ https://bugs.webkit.org/show_bug.cgi?id=41626
+
+ Add test to be sure that only <mi> elements use italic fonts by default.
+ Update test with fractions to take into account the correct behaviour of mtext (regular instead of italic).
+
+ * css/mathml.css:
+ (mi):
+
+2010-07-09 Tony Gentilcore <tonyg@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Implement performance.navigation.type
+ https://bugs.webkit.org/show_bug.cgi?id=41564
+
+ Tests: fast/dom/navigation-type-back-forward.html
+ fast/dom/navigation-type-navigate.html
+ fast/dom/navigation-type-reload.html
+
+ * page/Navigation.cpp:
+ (WebCore::Navigation::type):
+ * page/Navigation.h:
+ (WebCore::Navigation::):
+ * page/Navigation.idl:
+
+2010-07-09 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: hide AppCache until implemented.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41858
+
+ * inspector/front-end/StoragePanel.js:
+ (WebInspector.StoragePanel):
+ (WebInspector.StoragePanel.prototype.reset):
+ (WebInspector.StoragePanel.prototype.addApplicationCache):
+
+2010-07-09 François Sausset <sausset@gmail.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Set the good default behaviour for the columalign attribute on MathML mtable element
+ https://bugs.webkit.org/show_bug.cgi?id=41631
+
+ Test update: mathml/tables.xhtml
+
+ * css/mathml.css:
+ (math):
+
+2010-07-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r62937.
+ http://trac.webkit.org/changeset/62937
+ https://bugs.webkit.org/show_bug.cgi?id=41955
+
+ Crashes SnowLeopard leaks and Windows debug bot in fast/xsl
+ /xslt-relative-path.xml, with assertion in
+ XSLTProcessorLibxslt.cpp:264 (Requested by WildFox on
+ #webkit).
+
+ * xml/XSLTProcessor.h:
+ (WebCore::XSLTProcessor::XSLTProcessor):
+ * xml/XSLTProcessorLibxslt.cpp:
+ (WebCore::docLoaderFunc):
+ (WebCore::setXSLTLoadCallBack):
+ (WebCore::xsltStylesheetPointer):
+ (WebCore::XSLTProcessor::transformToString):
+
+2010-07-09 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ NotificationPresenter needs a cancelRequestPermission API
+ https://bugs.webkit.org/show_bug.cgi?id=41783
+
+ Updated NotificationPresenter API, to use ScriptExecutionContext instead of origin.
+ Added new API NotificationPresenter::cancelRequestsForPermision
+ The new API will be implemented and a test will be added in a followup patch.
+
+ * notifications/Notification.cpp:
+ (WebCore::Notification::Notification):
+ * notifications/NotificationCenter.cpp:
+ (WebCore::NotificationCenter::checkPermission):
+ (WebCore::NotificationCenter::requestPermission):
+ (WebCore::NotificationCenter::disconnectFrame):
+ * notifications/NotificationCenter.h:
+ * notifications/NotificationPresenter.h:
+
+2010-07-09 Andreas Wictor <andreas.wictor@xcerion.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Remove global variables from XSLTProcessorLibxslt.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=41348
+
+ Remove the globalProcessor and globalDocLoader global variables
+ by using the _private field that exists on most libxml structs.
+
+ No new tests, existing tests covers this.
+
+ * xml/XSLTProcessor.h:
+ (WebCore::XSLTProcessor::sourceNode):
+ (WebCore::XSLTProcessor::XSLTProcessor):
+ * xml/XSLTProcessorLibxslt.cpp:
+ (WebCore::registeredXSLTProcessors):
+ (WebCore::registeredXSLStyleSheets):
+ (WebCore::docLoaderFunc):
+ (WebCore::clearSavedStyleSheetPointers):
+ (WebCore::xsltStylesheetPointer):
+ (WebCore::XSLTProcessor::transformToString):
+
+2010-07-09 Adam Barth <abarth@webkit.org>
+
+ Unreviewed build fix.
+
+ We recently taught the HTMLTokenizer to recognize self-closing tags,
+ <http://trac.webkit.org/changeset/62926>, but that confused the
+ LegacyHTMLTreeBuilder. It turns out that it's much happier if we never
+ say a tag is self-closing.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::convertToOldStyle):
+
+2010-07-09 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Rob Buis.
+
+ svg/custom/use-instanceRoot-event-bubbling.xhtml test crashes
+ https://bugs.webkit.org/show_bug.cgi?id=41931
+
+ Be careful to not mutate (marking it for recreation) the shadow tree, while building it.
+ The recent change that cloneNode() properly synchronizes the style/SVG attributes caused this problem.
+
+ Fixes crash seen on the buildbots in svg/custom/use-instanceRoot-event-bubbling.xhtml.
+
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::SVGUseElement):
+ (WebCore::SVGUseElement::recalcStyle):
+ (WebCore::SVGUseElement::buildShadowAndInstanceTree):
+ (WebCore::SVGUseElement::invalidateShadowTree):
+ * svg/SVGUseElement.h:
+ (WebCore::SVGUseElement::setUpdatesBlocked):
+
+2010-07-09 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Skip leading newlines in <textarea>
+ https://bugs.webkit.org/show_bug.cgi?id=41947
+
+ We would have caught this earlier with the ASSERT.
+
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::nextToken):
+
+2010-07-08 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Provide detailed network info in the resources panel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=40227
+
+ * English.lproj/localizedStrings.js:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::willSendRequest):
+ (WebCore::InspectorController::didReceiveResponse):
+ * inspector/InspectorController.h:
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::InspectorResource):
+ (WebCore::InspectorResource::updateResponse):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::buildObjectForTiming):
+ * inspector/InspectorResource.h:
+ * inspector/front-end/ResourcesPanel.js:
+ (WebInspector.ResourcesPanel):
+ (WebInspector.ResourcesPanel.prototype.elementsToRestoreScrollPositionsFor):
+ (WebInspector.ResourcesPanel.prototype._getPopoverAnchor):
+ (WebInspector.ResourcesPanel.prototype._showPopover):
+ (WebInspector.ResourcesPanel.prototype.hide):
+ (WebInspector.ResourceTimeCalculator.prototype.computeBarGraphLabels):
+ (WebInspector.ResourceGraph):
+ * inspector/front-end/inspector.js:
+ (WebInspector.updateResource):
+ * platform/network/ResourceLoadTiming.h:
+ (WebCore::ResourceLoadTiming::create):
+ (WebCore::ResourceLoadTiming::deepCopy):
+ (WebCore::ResourceLoadTiming::operator==):
+ (WebCore::ResourceLoadTiming::ResourceLoadTiming):
+ * platform/network/ResourceRequestBase.h:
+ (WebCore::ResourceRequestBase::reportLoadTiming):
+ (WebCore::ResourceRequestBase::setReportLoadTiming):
+ (WebCore::ResourceRequestBase::ResourceRequestBase):
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::connectionID):
+ (WebCore::ResourceResponseBase::setConnectionID):
+ * platform/network/ResourceResponseBase.h:
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Implement self closing start tag state in the tokenizer
+ https://bugs.webkit.org/show_bug.cgi?id=41946
+
+ Amazingly we got this far w/o needing self closing.
+ The LegacyHTMLTreeBuilder clearly uses the self-closing
+ state, but the fact that we never exposed it seems to
+ not have caused any test failures. Sad.
+
+ The new HTMLTreeBuilder only needs the self closing state
+ for foreign content mode (and a few parse error cases).
+
+ * html/HTMLToken.h:
+ (WebCore::HTMLToken::setSelfClosing):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::nextToken):
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::):
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add basic "in foreign content" support to the TreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41943
+
+ This is covered by numerous tests in html5lib/runner.html.
+
+ "in foreign content" mode requires us to be able to process
+ tokens using the "secondary insertion mode". We have to set
+ a fake insertion mode to do that, so much of this code is enabling
+ setting of fake insertion modes, and then later restoration of the
+ insertion mode after execution.
+
+ There is a lot more of foreign content mode to implement, but this is
+ a good start resulting in huge test progressions.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::insertSelfClosingHTMLElement):
+ - Use createHTMLElementAndAttachToCurrent instead of copy/paste code.
+ - No need to include HTMLElementFactory in this file.
+ * html/HTMLConstructionSite.h:
+ - RedirectToFosterParentGuard does not need to be a friend class.
+ * html/HTMLElementStack.cpp:
+ (WebCore::HTMLElementStack::isOnlyHTMLElementsInScope):
+ * html/HTMLElementStack.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::):
+ * html/HTMLTreeBuilder.h:
+ (WebCore::HTMLTreeBuilder::setInsertionMode):
+ (WebCore::HTMLTreeBuilder::isFakeInsertionMode):
+ (WebCore::HTMLTreeBuilder::setFakeInsertionMode):
+
+2010-07-09 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Coalesce text nodes when foster parenting
+ https://bugs.webkit.org/show_bug.cgi?id=41921
+
+ Introduces the notion of an AttachmentSite to the overall
+ HTMLConstructionSite. Maybe we should rename HTMLConstructionSite to
+ HTMLConstructionArea since we construct things all over the tree? :)
+
+ There's something wrong in the internal layering in this class, but I
+ can't quite see what it is. I added a FIXME for the some of the
+ symptoms.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::attach):
+ (WebCore::HTMLConstructionSite::attachAtSite):
+ (WebCore::HTMLConstructionSite::insertTextNode):
+ (WebCore::HTMLConstructionSite::findFosterSite):
+ (WebCore::HTMLConstructionSite::fosterParent):
+ * html/HTMLConstructionSite.h:
+
+2010-07-08 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ RenderSVGRoot does not include border/padding while repainting
+ https://bugs.webkit.org/show_bug.cgi?id=41854
+
+ RenderSVGRoot does not include border/padding in the repaint rect.
+ clippedOverflowRectForRepaint() was missing. Affects all DRT results,
+ as <svg> now gets properly sized.
+
+ Test: svg/custom/repaint-moving-svg-and-div.xhtml
+
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::repaintRectInLocalCoordinates):
+ (WebCore::RenderSVGRoot::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGRoot.h:
+
+2010-07-09 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Add RuntimeEnabledFeatures::timeRangesEnabled() required by r62880
+
+ https://bugs.webkit.org/show_bug.cgi?id=41935
+
+ * bindings/generic/RuntimeEnabledFeatures.cpp:
+ (WebCore::RuntimeEnabledFeatures::timeRangesEnabled):
+ Add in timeRangesEnabled() implementation.
+ * bindings/generic/RuntimeEnabledFeatures.h:
+ Add in timeRangesEnabled() declaration.
+
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add setInsertionMode setter in preparation for "in foreign content" mode
+ https://bugs.webkit.org/show_bug.cgi?id=41942
+
+ "in foreign content" mode needs to be able to use a fake
+ insertion mode for processing. We need to be able to save the
+ original insertion mode, set a fake one, and then restore the original
+ if it wasn't changed. To detect changes, we need all callsites to
+ use a setInsertionMode accessor instead of m_insertionMode =
+
+ No functional changes, thus no tests.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processBodyEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::setInsertionModeAndEnd):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTableBody):
+ (WebCore::HTMLTreeBuilder::processEndTagForInCell):
+ (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption):
+ (WebCore::HTMLTreeBuilder::processTrEndTagForInRow):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processDefaultForInTableTextMode):
+ (WebCore::HTMLTreeBuilder::processGenericRCDATAStartTag):
+ (WebCore::HTMLTreeBuilder::processGenericRawTextStartTag):
+ (WebCore::HTMLTreeBuilder::processScriptStartTag):
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add insertForeignElement in preparation for adding "in foreign content" support
+ https://bugs.webkit.org/show_bug.cgi?id=41940
+
+ No functional changes, thus no tests.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::insertForeignElement):
+ (WebCore::HTMLConstructionSite::createElement):
+ (WebCore::HTMLConstructionSite::createHTMLElement):
+ * html/HTMLConstructionSite.h:
+
+2010-07-09 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implementing pending table characters
+ https://bugs.webkit.org/show_bug.cgi?id=41916
+
+ This turned out to not be as scary as I thought it would be.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processDoctypeToken):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processComment):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ (WebCore::HTMLTreeBuilder::processDefaultForInTableTextMode):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-08 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Handle whitespace correctly
+ https://bugs.webkit.org/show_bug.cgi?id=41907
+
+ This patch introduces an extra memcpy in the character token pipeline.
+ I'll remove the memcpy in a future patch.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::insertTextNode):
+ * html/HTMLConstructionSite.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Move more mode handling into functions for later re-use
+ https://bugs.webkit.org/show_bug.cgi?id=41939
+
+ No functional changes, thus no tests.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processEndTagForInTableBody):
+ (WebCore::HTMLTreeBuilder::processEndTagForInRow):
+ (WebCore::HTMLTreeBuilder::processEndTagForInCell):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add new popUntilPopped functions to clean up code
+ https://bugs.webkit.org/show_bug.cgi?id=41936
+
+ Pretty self explanatory. Much awesome code reduction.
+
+ No functional changes, thus no tests.
+
+ * html/HTMLElementStack.cpp:
+ (WebCore::HTMLElementStack::popUntilPopped):
+ * html/HTMLElementStack.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption):
+ (WebCore::HTMLTreeBuilder::processTableEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Unreviewed. Just renaming (discussed with Adam Barth).
+
+ Rename createElement* to createHTMLElement* to better reflect
+ behavior. This is in preparation for adding foreign content support.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::createHTMLElementAndAttachToCurrent):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlElement):
+ (WebCore::HTMLConstructionSite::insertHTMLHeadElement):
+ (WebCore::HTMLConstructionSite::insertHTMLBodyElement):
+ (WebCore::HTMLConstructionSite::insertHTMLElement):
+ (WebCore::HTMLConstructionSite::insertSelfClosingHTMLElement):
+ (WebCore::HTMLConstructionSite::createHTMLElement):
+ * html/HTMLConstructionSite.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+
+2010-07-09 Eric Seidel <eric@webkit.org>
+
+ Unreviewed. Just renaming (discussed with Adam Barth).
+
+ Rename insertElement to insertHTMLElement and
+ insertSelfClosingElement to insertSelfClosingHTMLElement
+ to better reflect what they actually do. This is in preparation
+ for adding foreign content support.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::insertHTMLElement):
+ (WebCore::HTMLConstructionSite::insertSelfClosingHTMLElement):
+ (WebCore::HTMLConstructionSite::insertFormattingElement):
+ (WebCore::HTMLConstructionSite::reconstructTheActiveFormattingElements):
+ (WebCore::HTMLConstructionSite::fosterParent):
+ * html/HTMLConstructionSite.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCloseWhenNestedTag):
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+ (WebCore::HTMLTreeBuilder::processStartTagForInHead):
+ (WebCore::HTMLTreeBuilder::processGenericRCDATAStartTag):
+ (WebCore::HTMLTreeBuilder::processGenericRawTextStartTag):
+
+2010-07-08 Rob Buis <rwlbuis@gmail.com>
+
+ Reviewed by Eric Seidel.
+
+ Implement SVGSVGElement.getElementById
+ https://bugs.webkit.org/show_bug.cgi?id=41655
+
+ Implement getElementById for SVGSVGElement by trying to
+ reuse Document.getElementById. If that fails to find an
+ SVG element in the document fragent do a subtree search.
+
+ Test: svg/custom/svg-getelementid.xhtml
+
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::getElementById):
+ * svg/SVGSVGElement.h:
+ * svg/SVGSVGElement.idl:
+
+2010-07-08 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Unwrap a few || blocks for easier readability
+ https://bugs.webkit.org/show_bug.cgi?id=41838
+
+ No functional change, thus no tests.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::adjustedLexerState):
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processComment):
+ (WebCore::HTMLTreeBuilder::processStartTagForInHead):
+
+2010-07-08 Sam Magnuson <smagnuson@netflix.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] for debugging purposes nice I'm contributing back my FPS
+ counter in the AnimationQtBase
+ https://bugs.webkit.org/show_bug.cgi?id=40381
+
+ Simply start a timer and count frames in the AnimationQtBase and
+ spit out the FPS count at the end of a single animation.
+
+ No new tests: this is a simple debugging aid.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::AnimationQt::updateState):
+ (WebCore::AnimationQt::updateCurrentTime):
+ (WebCore::TransformAnimationQt::updateState):
+ (WebCore::OpacityAnimationQt::updateState):
+
+2010-07-08 Sam Magnuson <smagnuson@netflix.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] instance objects created for QObjects are somtimes GC'd
+ https://bugs.webkit.org/show_bug.cgi?id=40352
+
+ In markAggregate loop over all the current fields and for any that
+ still have a dynamic property or a child, mark them as
+ well. Otherwise the proxy instance will go away and the JS that
+ was bound to it will be lost.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::getQtInstance):
+ (JSC::Bindings::QtInstance::removeCachedMethod):
+ (JSC::Bindings::QtInstance::markAggregate):
+ (JSC::Bindings::QtInstance::getPropertyNames):
+
+2010-07-08 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ WebInspector: migrate InspectorDOMAgent to the generated version of
+ InspectorFrontend interface. This is the next step on the way to
+ Remote Debugging.
+
+ * bindings/js/ScriptEventListener.cpp:
+ (WebCore::eventListenerHandlerBody):
+ (WebCore::eventListenerHandlerLocation):
+ * bindings/js/ScriptEventListener.h:
+ * bindings/v8/ScriptEventListener.cpp:
+ (WebCore::eventListenerHandlerBody):
+ (WebCore::eventListenerHandlerLocation):
+ * bindings/v8/ScriptEventListener.h:
+ * inspector/CodeGeneratorInspector.pm:
+ * inspector/InspectorCSSStore.cpp:
+ (WebCore::InspectorCSSStore::inspectorStyleSheet):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::connectFrontend):
+ * inspector/InspectorController.h:
+ (WebCore::InspectorController::inspectorFrontend2):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::InspectorDOMAgent):
+ (WebCore::InspectorDOMAgent::setDocument):
+ (WebCore::InspectorDOMAgent::handleEvent):
+ (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
+ (WebCore::InspectorDOMAgent::getEventListenersForNode):
+ (WebCore::InspectorDOMAgent::buildObjectForNode):
+ (WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
+ (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
+ (WebCore::InspectorDOMAgent::buildObjectForEventListener):
+ (WebCore::InspectorDOMAgent::didInsertDOMNode):
+ (WebCore::InspectorDOMAgent::getStyles):
+ (WebCore::InspectorDOMAgent::getAllStyles):
+ (WebCore::InspectorDOMAgent::getStyleSheet):
+ (WebCore::InspectorDOMAgent::getRuleRangesForStyleSheetId):
+ (WebCore::InspectorDOMAgent::getInlineStyle):
+ (WebCore::InspectorDOMAgent::getComputedStyle):
+ (WebCore::InspectorDOMAgent::buildObjectForAttributeStyles):
+ (WebCore::InspectorDOMAgent::buildArrayForCSSRules):
+ (WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
+ (WebCore::InspectorDOMAgent::applyStyleText):
+ (WebCore::InspectorDOMAgent::toggleStyleEnabled):
+ (WebCore::InspectorDOMAgent::setRuleSelector):
+ (WebCore::InspectorDOMAgent::addRule):
+ (WebCore::InspectorDOMAgent::buildObjectForStyle):
+ (WebCore::InspectorDOMAgent::populateObjectWithStyleProperties):
+ (WebCore::InspectorDOMAgent::buildArrayForDisabledStyleProperties):
+ (WebCore::InspectorDOMAgent::buildObjectForStyleSheet):
+ (WebCore::InspectorDOMAgent::buildObjectForRule):
+ (WebCore::InspectorDOMAgent::toArray):
+ (WebCore::InspectorDOMAgent::reportNodesAsSearchResults):
+ * inspector/InspectorDOMAgent.h:
+ (WebCore::InspectorDOMAgent::create):
+ * inspector/InspectorFrontend.cpp:
+ * inspector/InspectorFrontend.h:
+ * inspector/InspectorFrontend2.idl:
+ * inspector/front-end/inspector.js:
+ (WebInspector.dispatchMessageFromBackend):
+
+2010-07-08 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler.
+
+ compositing/iframes/iframe-resize.html displays incorrectly after the resize
+ https://bugs.webkit.org/show_bug.cgi?id=41794
+
+ The clip and scroll layers of a composited iframe's RenderLayerCompositor are updated from
+ from updateGraphicsLayerGeometry(), but this is too early to get the correct layoutWidth and
+ layoutHeight from the FrameView which happen later in layout. So when a widget size changes,
+ call updateAfterWidgetResize() directly on the RenderLayerBacking (if any).
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateAfterWidgetResize): New method that updates the clip
+ and scroll layers of the iframe's content RenderLayerCompositor.
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry): Call updateAfterWidgetResize()
+ * rendering/RenderLayerBacking.h: Add updateAfterWidgetResize().
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::setWidgetGeometry): Call updateAfterWidgetResize().
+
+2010-07-08 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Calling layoutTestController.layerTreeAsText() should update layout
+ https://bugs.webkit.org/show_bug.cgi?id=41818
+
+ Call updateLayout() on the document before obtaining the layer tree.
+ This will update compositing layers.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::layerTreeAsText):
+
+2010-07-08 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Get my head wrapped around processCharacter
+ https://bugs.webkit.org/show_bug.cgi?id=41812
+
+ The bulk of the patch is just stubbing out functions to document what
+ the spec tells us to do. I'll implement these functions in subsequent
+ patches.
+
+ * html/HTMLConstructionSite.h:
+ (WebCore::HTMLConstructionSite::insertLeadingWhitespace):
+ (WebCore::HTMLConstructionSite::insertLeadingWhitespaceWithActiveFormattingElements):
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ * html/HTMLTreeBuilder.h:
+ (WebCore::HTMLTreeBuilder::skipLeadingWhitespace):
+
+2010-07-08 Tony Chang <tony@chromium.org>
+
+ Reviewed by Ojan Vafai.
+
+ WebCore::InsertLineBreakCommand::shouldUseBreakElement ReadAV@NULL
+ https://bugs.webkit.org/show_bug.cgi?id=30116
+ Fixing the crash causes text insertions on hidden elements to get ignored
+ (not a new bug). This is https://bugs.webkit.org/show_bug.cgi?id=40342
+
+ Test: editing/inserting/return-key-in-hidden-textarea.html
+
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+
+2010-07-08 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=41923
+ TimeRanges should expose a JS constructor
+
+ * html/TimeRanges.idl: Remove [OmitConstructor].
+ * page/DOMWindow.idl: Add constructor.
+
+2010-07-08 Erik Arvidsson <arv@chromium.org>
+
+ Reviewed by Ojan Vafai.
+
+ Add missing padding-end and margin-end CSS properties.
+ https://bugs.webkit.org/show_bug.cgi?id=25761
+
+ Tests: fast/css/margin-start-end.html
+ fast/css/padding-start-end.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ * css/CSSPropertyNames.in:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+ * inspector/front-end/SourceCSSTokenizer.js:
+ (WebInspector.SourceCSSTokenizer):
+
+2010-07-08 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Add the ability for user scripts and user styles to affect just the top frame.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41529
+
+ Tests: userscripts/user-script-all-frames.html
+ userscripts/user-script-top-frame-only.html
+ userscripts/user-style-all-frames.html
+ userscripts/user-style-top-frame-only.html
+
+ * WebCore.base.exp: Update PageGroup method signatures.
+ * dom/Document.cpp:
+ (WebCore::Document::pageGroupUserSheets): Check allFrames before injecting.
+ * page/Frame.cpp:
+ (WebCore::Frame::injectUserScriptsForWorld): Ditto.
+ * page/PageGroup.cpp:
+ (WebCore::PageGroup::addUserScriptToWorld):
+ (WebCore::PageGroup::addUserStyleSheetToWorld):
+ * page/PageGroup.h:
+ * page/UserScript.h:
+ (WebCore::UserScript::UserScript):
+ (WebCore::UserScript::injectedFrames):
+ * page/UserScriptTypes.h:
+ (WebCore::):
+ * page/UserStyleSheet.h:
+ (WebCore::UserStyleSheet::UserStyleSheet):
+ (WebCore::UserStyleSheet::injectedFrames):
+
+2010-07-08 Adele Peterson <adele@apple.com>
+
+ Reviewed by Jon Honeycutt, Adam Roben, and Darin Adler.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=41721
+ <rdar://problem/8158561> Missing plug-in indicator should have a pressed state
+
+ Test: plugins/clicking-missing-plugin-fires-delegate.html
+
+ * html/HTMLPlugInElement.cpp:
+ (WebCore::HTMLPlugInElement::HTMLPlugInElement): Initialize m_isCapturingMouseEvents.
+ (WebCore::HTMLPlugInElement::detach): If we're still capturing when getting detached, clear the capturing node on the EventHandler.
+ (WebCore::HTMLPlugInElement::defaultEventHandler): Call handleMissingPluginIndicatorEvent when the missing plugin indicator is showing.
+ * html/HTMLPlugInElement.h:
+ (WebCore::HTMLPlugInElement::isCapturingMouseEvents):
+ (WebCore::HTMLPlugInElement::setIsCapturingMouseEvents):
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::shouldMissingPluginMessageBeButton): Added default implementation.
+ * rendering/RenderEmbeddedObject.cpp:
+ (WebCore::replacementTextRoundedRectPressedColor):
+ (WebCore::RenderEmbeddedObject::RenderEmbeddedObject):
+ (WebCore::RenderEmbeddedObject::setMissingPluginIndicatorIsPressed): Added. Causes a repaint when the state changes.
+ (WebCore::RenderEmbeddedObject::paintReplaced): Call getReplacementTextGeometry.
+ (WebCore::RenderEmbeddedObject::getReplacementTextGeometry): Factored this out so it can be used in paintReplaced and in isInMissingPluginIndicator.
+ (WebCore::RenderEmbeddedObject::isInMissingPluginIndicator): Hit test to see if the mouse event is in the missing plugin indicator.
+ (WebCore::RenderEmbeddedObject::handleMissingPluginIndicatorEvent): Capture mouse events as needed and track the pressed appearance.
+ * rendering/RenderEmbeddedObject.h:
+
+2010-07-08 James Robinson <jamesr@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Allow resizing and getting the texture id from an offscreen GLES2Context
+ https://bugs.webkit.org/show_bug.cgi?id=41828
+
+ When using an offscreen GLES2Context the caller needs to be able to resize the backing store
+ managed by the embedder and get access to a texture id to pass to the compositor. WebGL
+ does these actions in an indirect way, it will be refactored to use this path.
+
+ * platform/chromium/GLES2Context.h:
+
+2010-07-02 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Crash in RenderObject::containingBlock when clearing selection in a display:none node.
+ https://bugs.webkit.org/show_bug.cgi?id=41523
+
+ updateStyleIfNeeded before clearing the selection in the RenderView. Otherwise,
+ m_selectionStart and m_selectionEnd in RenderView point to garbage object.
+ This fixes the crash because updateStyleIfNeeded clears the selection before
+ clobbering nodes that contain the selection.
+
+ Test: editing/selection/crash-on-clear-selection.html
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::updateAppearance):
+
+2010-07-08 Brent Fulgham <bfulgham@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ Correct a mistake in calculating squiggle extents. The entire
+ quantity was being divided by two, rather than just the unitWidth.
+ This error caused the squiggle to be about half the expected length.
+
+ * platform/graphics/cairo/DrawErrorUnderline.h:
+ (drawErrorUnderline):
+
+2010-07-08 John Abd-El-Malek <jam@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [V8] Navigation policy doesn't play nicely with pepper plugins
+ https://bugs.webkit.org/show_bug.cgi?id=41864
+
+ * bindings/v8/V8Utilities.cpp:
+ (WebCore::callingOrEnteredFrame):
+ (WebCore::shouldAllowNavigation):
+ (WebCore::navigateIfAllowed):
+
+2010-07-08 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Missing plug-ins may cause an assertion failure.
+ https://bugs.webkit.org/show_bug.cgi?id=41900
+
+ Reviewed by Adele Peterson.
+
+ Test: plugins/missing-plugin.html
+
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::~PluginView):
+ Check whether m_instance is null before trying to remove it from the
+ map. Trying to remove a null instance results in an assertion failure.
+ (WebCore::PluginView::PluginView):
+ Initialize m_instance to 0, because there is an early return that may
+ skip its being assigned its proper value.
+
+2010-07-08 Darin Adler <darin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix a test failure seen only on the Leopard bot.
+
+ * bindings/js/JSSharedWorkerCustom.cpp:
+ (WebCore::JSSharedWorkerConstructor::constructJSSharedWorker):
+ If SharedWorker::create returns an exception, don't try to create a wrapper
+ for its return value, which can be 0.
+
+2010-07-08 Albert J. Wong <ajwong@chromium.org>
+
+ Not reviewed, build break fix for chromium.
+
+ A new MediaControlElementType enum was added which caused a warning in
+ the Chromium build.
+
+ * rendering/RenderMediaControlsChromium.cpp:
+ (WebCore::RenderMediaControlsChromium::paintMediaControlsPart):
+ Add MediaVolumeSliderMuteButton enumartion entry.
+
+2010-07-08 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by David Levin.
+
+ Remove IDL declarations and stubs for navigator.registerProtocolHandler and navigator.registerContentHandler.
+ https://bugs.webkit.org/show_bug.cgi?id=41878
+
+ This is practically a rollback of http://trac.webkit.org/changeset/50477.
+
+ * page/Chrome.cpp:
+ * page/Chrome.h:
+ * page/ChromeClient.h:
+ * page/Navigator.cpp:
+ * page/Navigator.h:
+ * page/Navigator.idl:
+
+2010-07-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Darin Adler.
+
+ Fix adoptRef assertion failures caused by stack-allocated ResourceHandle objects
+ https://bugs.webkit.org/show_bug.cgi?id=41823
+
+ Create the ResourceHandle manually for now instead of calling
+ ::create, since that methods does a few extra checks that make us
+ fail a couple of HTTP tests.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::):
+
+2010-07-08 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by David Levin.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41886
+ Shorten access control failure explanation messages
+
+ * loader/CrossOriginAccessControl.cpp:
+ (WebCore::passesAccessControlCheck):
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
+ Removed "response header field" parts from error text - it's long, but doesn't add much
+ to header field name.
+
+ * platform/network/ResourceErrorBase.cpp:
+ * platform/network/ResourceErrorBase.h:
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::didFail):
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
+ (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest):
+ (WebCore::DocumentThreadableLoader::didReceiveResponse):
+ (WebCore::DocumentThreadableLoader::preflightFailure):
+ Renamed the constant for domain. WebCore shouldn't be creating errors observable by WebKit
+ clients, because it can't create a platform error, and cannot load a localized string.
+ We don't treat cross origin access check failures as true loading failures, so we don't tell
+ clients about these.
+
+2010-07-08 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Mac OS X media controls should have a way to adjust volume incrementally
+ https://bugs.webkit.org/show_bug.cgi?id=41718
+ <rdar://problem/5679472>
+
+ * css/CSSPrimitiveValueMappings.h:
+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Handle MediaVolumeSliderMuteButtonPart.
+
+ * css/CSSSelector.cpp:
+ (WebCore::CSSSelector::pseudoId): Handle PseudoMediaControlsVolumeSliderMuteButton.
+ (WebCore::nameToPseudoTypeMap): Define mediaControlsVolumeSliderMuteButton.
+ (WebCore::CSSSelector::extractPseudoType): Handle PseudoMediaControlsVolumeSliderMuteButton.
+
+ * css/CSSSelector.h:
+ (WebCore::CSSSelector::): Define PseudoMediaControlsVolumeSliderMuteButton.
+
+ * css/CSSValueKeywords.in: Define media-volume-slider-mute-button.
+
+ * css/mediaControls.css:
+ (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button): New.
+
+ * css/mediaControlsQuickTime.css:
+ (audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel): Add "overflow: visible"
+ so volume slider pop-up will be visible.
+
+ (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): Make
+ mute button 14x12 instead of 15x14 so it matches the size in the volume slider.
+
+ (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container):
+ (audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider):
+ (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button):
+ New.
+
+ * platform/ThemeTypes.h: Define MediaVolumeSliderMuteButtonPart.
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlInputElement::MediaControlInputElement): Handle MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.
+ (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement): Add ButtonLocation
+ parameter both mute buttons can be created.
+ (WebCore::MediaControlMuteButtonElement::create): Ditto.
+
+ * rendering/MediaControlElements.h: Define MediaVolumeSliderMuteButton and ButtonLocation.
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::styleDidChange): Update volume slider mute button.
+ (WebCore::RenderMedia::createMuteButton): Pass ButtonLocation parameter to MediaControlMuteButtonElement::create.
+ (WebCore::RenderMedia::createVolumeSliderMuteButton): New.
+ (WebCore::RenderMedia::updateControls): Deal with volume slider mute button.
+ (WebCore::RenderMedia::updateVolumeSliderContainer): Don't assume all ports want to position
+ the volume slider in the same place, call new volumeSliderOffsetFromMuteButton theme function.
+ (WebCore::RenderMedia::forwardEvent): Handle volume slider mute button.
+ * rendering/RenderMedia.h:
+
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::paint): Handle MediaVolumeSliderMuteButtonPart.
+ (WebCore::RenderTheme::volumeSliderOffsetFromMuteButton): New, return location previously hard
+ coded in RenderMedia::updateVolumeSliderContainer.
+ * rendering/RenderTheme.h:
+
+ * rendering/RenderThemeMac.h:
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::adjustMediaSliderThumbSize): Deal with the volume slider thumb.
+ (WebCore::RenderThemeMac::paintMediaVolumeSliderContainer): New, call the WKSI paint function
+ for this button.
+ (WebCore::RenderThemeMac::paintMediaVolumeSliderTrack): Ditto.
+ (WebCore::RenderThemeMac::paintMediaVolumeSliderThumb): Ditto.
+ (WebCore::RenderThemeMac::shouldRenderMediaControlPart): Draw the volume slider parts when
+ using the new controller UI for a movie that has audio.
+ (WebCore::RenderThemeMac::volumeSliderOffsetFromMuteButton): New, position the volume slider
+ directly above the mute button.
+
+ * rendering/style/RenderStyleConstants.h: Define MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.
+
+2010-07-08 Antonio Gomes <tonikitoo@webkit.org>
+
+ Unreviewed complementary fix for r62815
+
+ One last time change made me blind to a "!" in a if statment.
+
+ * editing/EditorCommand.cpp:
+ (WebCore::executeToggleStyle):
+
+2010-07-07 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Regression: Selection anchor + focus swap when arrow keys after setBaseAndExtent
+ https://bugs.webkit.org/show_bug.cgi?id=32605
+
+ Only have selections be non-directional when they are set via the mouse.
+ Otherwise, all selections are directional.
+
+ Test: editing/selection/extend-forward-after-set-base-and-extent.html
+
+ * WebCore.base.exp:
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::setSelection):
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::setSelection):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::selectClosestWordFromMouseEvent):
+ (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent):
+ (WebCore::EventHandler::handleMousePressEventTripleClick):
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+
+2010-07-08 Antonio Gomes <tonikitoo@webkit.org>
+
+ Reviewed by Ojan Vafai.
+
+ Refactor platform dependent editing behavior code out of Settings (part II)
+ https://bugs.webkit.org/show_bug.cgi?id=39854
+
+ Mac port is currently the only port relying on a style to be present on the start
+ of a selection to consider the style as applied or not. All other ports
+ have to have the style present in all text node of the selection for such.
+
+ Patch makes situations that depend on this check like this to be controlled by
+ the EditingBehavior class.
+
+ Refactoring, so no new tests needed.
+
+ * editing/EditingBehavior.h:
+ (WebCore::EditingBehavior::shouldToggleStyleBasedOnStartOfSelection):
+ * editing/EditorCommand.cpp:
+ (WebCore::executeToggleStyle):
+
+2010-07-08 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add stubbed out PluginView class
+ https://bugs.webkit.org/show_bug.cgi?id=41879
+
+ Export functions needed by WebKit2.
+
+ * WebCore.exp.in:
+
+2010-07-08 Ben Murdoch <benm@google.com>
+
+ Reviewed by Pavel Feldman.
+
+ Fix build break in V8ConsoleCustom.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=40825
+
+ No new tests as just fixing a build break.
+
+ * bindings/v8/custom/V8ConsoleCustom.cpp: Guard profilesAccessorGetter
+ appropriately.
+
+2010-07-08 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Pass Page to BackForwardControllerClient::createBackForwardList since it
+ may be called before implementations of BackForwardControllerClient have
+ access to a Page.
+
+ * history/BackForwardController.cpp:
+ (WebCore::BackForwardController::BackForwardController):
+ * history/BackForwardControllerClient.h:
+
+2010-07-08 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r62778.
+ http://trac.webkit.org/changeset/62778
+ https://bugs.webkit.org/show_bug.cgi?id=41866
+
+ Broke svg/W3C-SVG-1.1/text-intro-05-t.svg in debug (Requested
+ by pfeldman on #webkit).
+
+ * platform/graphics/chromium/FontLinux.cpp:
+ (WebCore::TextRunWalker::TextRunWalker):
+ (WebCore::TextRunWalker::~TextRunWalker):
+
+2010-07-08 Vitaly Repeshko <vitalyr@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Fix adoptRef usage violation in IDBObjectStoreRequest
+ https://bugs.webkit.org/show_bug.cgi?id=41869
+
+ * storage/IDBObjectStoreRequest.cpp:
+ (WebCore::IDBObjectStoreRequest::IDBObjectStoreRequest):
+
+2010-07-08 Sam Weinig <sam@webkit.org>
+
+ Another chromium build fix.
+
+ * history/BackForwardListChromium.cpp:
+ (WebCore::BackForwardListImpl::goBack):
+ (WebCore::BackForwardListImpl::goForward):
+ (WebCore::BackForwardListImpl::backListWithLimit):
+ (WebCore::BackForwardListImpl::forwardListWithLimit):
+ (WebCore::BackForwardListImpl::containsItem):
+ (WebCore::BackForwardListImpl::removeItem):
+
+2010-07-08 Sam Weinig <sam@webkit.org>
+
+ Fix Chromium build.
+
+ * WebCore.gyp/WebCore.gyp:
+
+2010-07-08 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=41826
+ Convert BackForwardList to an abstract base class and add BackForwardListImpl
+ as the concrete implementation of it.
+
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.exp.in:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * history/BackForwardController.cpp:
+ (WebCore::BackForwardController::BackForwardController):
+ * history/BackForwardController.h:
+ * history/BackForwardList.cpp: Removed.
+ * history/BackForwardList.h:
+ (WebCore::BackForwardList::~BackForwardList):
+ (WebCore::BackForwardList::isBackForwardListImpl):
+ (WebCore::BackForwardList::BackForwardList):
+ * history/BackForwardListChromium.cpp:
+ * history/BackForwardListImpl.cpp: Copied from WebCore/history/BackForwardList.cpp.
+ * history/BackForwardListImpl.h: Copied from WebCore/history/BackForwardList.h.
+ (WebCore::BackForwardListImpl::isBackForwardListImpl):
+
+2010-07-08 Vitaly Repeshko <vitalyr@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Fix adoptRef usage violations (mostly in chromium)
+ https://bugs.webkit.org/show_bug.cgi?id=41863
+
+ * bindings/v8/V8DOMWrapper.cpp:
+ (WebCore::V8DOMWrapper::wrapNativeNodeFilter):
+ * bindings/v8/V8NodeFilterCondition.h:
+ (WebCore::V8NodeFilterCondition::create):
+ * bindings/v8/custom/V8HTMLAllCollectionCustom.cpp:
+ (WebCore::getNamedItems):
+ * bindings/v8/custom/V8HTMLCollectionCustom.cpp:
+ (WebCore::getNamedItems):
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp:
+ (WebCore::V8HTMLFormElement::namedPropertyGetter):
+ * bindings/v8/custom/V8HTMLSelectElementCustom.cpp:
+ (WebCore::V8HTMLSelectElement::namedPropertyGetter):
+ * bindings/v8/custom/V8NamedNodesCollection.h:
+ (WebCore::V8NamedNodesCollection::create):
+ (WebCore::V8NamedNodesCollection::V8NamedNodesCollection):
+ * storage/IDBDatabaseRequest.cpp:
+ (WebCore::IDBDatabaseRequest::IDBDatabaseRequest):
+ * storage/IndexedDatabaseRequest.cpp:
+ (WebCore::IndexedDatabaseRequest::IndexedDatabaseRequest):
+
+2010-07-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Silence a few noisy build rules.
+
+ * GNUmakefile.am:
+
+2010-07-08 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Canvas putImageData() resets painter state
+ https://bugs.webkit.org/show_bug.cgi?id=41827
+
+ Use drawImage() to copy pixels in putImageData() instead of QPixmap::operator=
+
+ Test: fast/canvas/canvas-state-intact-after-putImageData.html
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::putImageData):
+
+2010-07-08 Andrey Kosyakov <caseq@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: Do not invoke shortcuts popup upon bare '?' if it's typed
+ into an input field.
+ https://bugs.webkit.org/show_bug.cgi?id=41760
+
+ * inspector/front-end/inspector.js:
+ (WebInspector.documentKeyDown):
+
+2010-07-08 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Kent Tamura.
+
+ [WINCE] Buildfix for EventHandler
+ https://bugs.webkit.org/show_bug.cgi?id=41829
+
+ SM_MENUDROPALIGNMENT isn't supported on WinCE.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::sendContextMenuEventForKey):
+
+2010-07-08 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by David Levin.
+
+ Fix characters with unicode-bidi-mirror property are not correctly
+ mirrored in Linux.
+ https://bugs.webkit.org/show_bug.cgi?id=41305
+
+ Since harfbuzz does not do mirroring, chromium should iterate each
+ character in the string and mirror it if needed before passing the
+ string to harfbuzz for shaping.
+
+ Test: fast/text/international/bidi-mirror-he-ar.html
+
+ * platform/graphics/chromium/FontLinux.cpp:
+ (WebCore::TextRunWalker::TextRunWalker):
+ (WebCore::TextRunWalker::~TextRunWalker):
+
+2010-07-08 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Rob Buis & Dirk Schulze.
+
+ SVG text transformed incorrectly when a transform and gradient applied
+ https://bugs.webkit.org/show_bug.cgi?id=41563
+
+ When rendering filled/stroked text with a gradient, RenderSVGResourceGradient creates a mask image,
+ renders the text into the image, and then clips the current context against that image buffer,
+ and filling a rect afterwards. This happened in the wrong coordinate space so far. Don't actually
+ try to compute the right transformation matrix (which failed), but extract it directly from the
+ GraphicsContext and apply this transformation to the mask image context.
+
+ Fixes pixellation in svg/batik/text/textEffect3.svg and makes the new test svg/custom/text-rotated-gradient.svg pass.
+ Only affects CoreGraphics platforms.
+
+ Test: svg/custom/text-rotated-gradient.svg
+
+ * rendering/RenderSVGResourceGradient.cpp:
+ (WebCore::absoluteTransformFromContext):
+ (WebCore::createMaskAndSwapContextForTextGradient):
+ (WebCore::clipToTextMask):
+
+2010-07-07 Alexander Pavlov <apavlov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Chromium] Crash when re-entering message loop
+ https://bugs.webkit.org/show_bug.cgi?id=41697
+
+ A Chromium-specific test case will be submitted into Chromium shortly.
+
+ * page/PageGroupLoadDeferrer.cpp:
+ (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
+ * page/PageGroupLoadDeferrer.h:
+ (WebCore::PageGroupLoadDeferrer::nextDeferrer):
+
+2010-07-07 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: skip breakpoints when script is already paused
+ https://bugs.webkit.org/show_bug.cgi?id=41768
+
+ Test: inspector/debugger-no-nested-pause.html
+
+ * bindings/v8/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::handleV8DebugEvent):
+
+2010-07-08 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ WebCore/benchmarks/parser/html-parser.html spends a lot of time in deprecatedParseURL
+ https://bugs.webkit.org/show_bug.cgi?id=41807
+
+ Wow. This was an awful bug. We were always taking the slow case
+ every time we parsed a URL. This is about a 10% speedup on our
+ parsing benchmark, and might cause as much as a 1% speedup for Apple's
+ PLT (even though I can't run that).
+
+ We still spend a lot of time in deprecatedParseURL. We might consider
+ inlining it if its being kept around much longer.
+
+ No behavioral change, just fixing a broken optimization.
+
+ * css/CSSHelper.cpp:
+ (WebCore::deprecatedParseURL):
+ - We only need to strip characters <= '\r', not >.
+
+2010-07-08 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: factor out common part of debugger tests
+ https://bugs.webkit.org/show_bug.cgi?id=41836
+
+ * bindings/js/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::recompileAllJSFunctions): postpone script recompilation if JS stack is not empty.
+
+2010-07-08 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Kent Tamura.
+
+ Buildfix for !ENABLE(SVG_ANIMATION) after r51567.
+ https://bugs.webkit.org/show_bug.cgi?id=41803
+
+ * svg/SVGDocumentExtensions.cpp:
+ (WebCore::SVGDocumentExtensions::sampleAnimationAtTime):
+
+2010-07-07 Pavel Podivilov <podivilov@chromium.org>
+
+ Reviewed by Nate Chapin.
+
+ [V8] Fix document wrapper memory leak in bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=41771
+
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
+ (WebCore::V8HTMLDocument::WrapInShadowObject): Do not create static persistent handle
+ to shadowConstructor because it keeps the first context alive forever.
+
+2010-07-07 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [Qt] Enable smooth pixmap transforms by default
+ https://bugs.webkit.org/show_bug.cgi?id=41774
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
+ (WebCore::GraphicsContext::setImageInterpolationQuality):
+
+2010-07-07 Jesus Sanchez-Palencia <jesus@webkit.org>
+
+ Reviewed by Antti Koivisto.
+
+ [Qt] Missing include to build QtWebKit with WebKit2 in MediaPlayerPrivatePhonon.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=41767
+
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp: Add Logging.h include
+
+2010-07-07 Pavel Podivilov <podivilov@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Move v8-related script offset conversion to DebuggerScript.js
+ https://bugs.webkit.org/show_bug.cgi?id=41755
+
+ * bindings/v8/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::dispatchDidParseSource):
+
+2010-07-07 Nicolas Weber <thakis@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+ https://bugs.webkit.org/show_bug.cgi?id=41580
+
+ Fix rendering of radial gradients in skia if both points of the
+ gradient are the same and r0 > 0.
+
+ Test: fast/gradients/radial-centered.html
+
+ * platform/graphics/skia/GradientSkia.cpp:
+ (WebCore::Gradient::platformGradient):
+
+2010-06-18 MORITA Hajime <morrita@google.com>
+
+ Reviewed by Ojan Vafai.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26526
+ Add support for input events (oninput) to contentEditable elements
+
+ Made a default event handler on the Node to dispatch an input event when
+ webkitEditableContentChanged arrived.
+
+ Test: fast/events/event-input-contentEditable.html
+
+ * dom/Node.cpp:
+ (WebCore::Node::defaultEventHandler):
+
+2010-07-07 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Fix adoptRef assertion failures caused by stack-allocated ResourceHandle objects
+ https://bugs.webkit.org/show_bug.cgi?id=41823
+
+ * platform/network/android/ResourceHandleAndroid.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Use adoptRef and new instead
+ of allocating an object on the stack.
+ * platform/network/curl/ResourceHandleCurl.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Ditto.
+ * platform/network/qt/ResourceHandleQt.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Ditto.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Use create instead of
+ allocating an object on the stack.
+
+2010-07-07 Joseph Pecoraro <joepeck@webkit.org>
+
+ Rubber-stamped by Pavel Feldman.
+
+ Web Inspector: All RefPtr arguments and return values should be changed to PassRefPtr according to common practice.
+ https://bugs.webkit.org/show_bug.cgi?id=41759
+
+ * inspector/CodeGeneratorInspector.pm:
+
+2010-07-07 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: TextArea should return AXSelectedTextRange of 0,0 if the cursor is not in the text area
+ https://bugs.webkit.org/show_bug.cgi?id=41810
+
+ Test: platform/mac/accessibility/selected-text-range-for-empty-textarea.html
+
+ * accessibility/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+
+2010-07-07 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ AX: Data table heuristics: assume data table if at least one row or column of TH cells exist
+ https://bugs.webkit.org/show_bug.cgi?id=41806
+
+ Test: platform/mac/accessibility/table-with-row-col-of-headers.html
+
+ * accessibility/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::isTableExposableThroughAccessibility):
+
+2010-07-07 Mark Rowe <mrowe@apple.com>
+
+ Fix the build.
+
+ Xcode decided to change the reference type from "Relative to Build Product" to "Relative to Group"
+ when I moved the file between folders. That's incredibly confusing so I'll file a bug against Xcode.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-07 Mark Rowe <mrowe@apple.com>
+
+ Fix the MathML build.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately): Fix a typo in a variable name.
+
+2010-07-07 James Hawkins <jhawkins@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Move setSuggestedValue() and suggestedValue() back to public as it's
+ now used by WebInputElement.
+ https://bugs.webkit.org/show_bug.cgi?id=41785
+
+ No new tests, as the method is only being used by Chromium's WebKit
+ API.
+
+ * html/HTMLInputElement.h:
+
+2010-07-07 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Sam Weinig.
+
+ Clean up the project file slightly.
+
+ Remove obsolete .exp files, add the new .exp.in file, and move ExportFileGenerator.cpp in to the Exports collection.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-07 James Robinson <jamesr@chromium.org> and Vincent Scheib <schieb@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ WebCore::GLES2Context should allow creating onscreen and offscreen contexts
+ https://bugs.webkit.org/show_bug.cgi?id=41492
+
+ You should be able to create a GLES2Context for rendering both on screen
+ and off screen (to a texture). Chromium's layer renderer (used for compositing)
+ does the former. Currently WebGL does the latter by side stepping the
+ WebCore::GLES2Context API completely. Longer term it should move over to using this.
+
+ * platform/chromium/GLES2Context.h:
+ * platform/graphics/chromium/LayerRendererChromium.cpp:
+ (WebCore::LayerRendererChromium::initGL):
+
+2010-07-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Document::ownerElement() should return an HTMLFrameOwnerElement
+ https://bugs.webkit.org/show_bug.cgi?id=41789
+
+ Change return type of RenderLayerCompositor::enclosingIFrameElement() to
+ HTMLFrameOwnerElement*. No behavioral changes.
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingIFrame):
+ (WebCore::RenderLayerCompositor::enclosingIFrameElement):
+ * rendering/RenderLayerCompositor.h:
+
+2010-07-07 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Add reverseFind to Vector and deploy in HTML5 parser
+ https://bugs.webkit.org/show_bug.cgi?id=41778
+
+ This patch moves reverseFind from begin an
+ HTMLFormattingElementList-specific concept to begin a general Vector
+ concept. Also, instead of using Entry as the type for operator==, we
+ now use elements directly. The old code compiled because the Entry
+ constructor wasn't explicit, which means we were churning refs on every
+ comparison!
+
+ * html/HTMLFormattingElementList.cpp:
+ (WebCore::HTMLFormattingElementList::find):
+ (WebCore::HTMLFormattingElementList::bookmarkFor):
+ (WebCore::HTMLFormattingElementList::insertAt):
+ (WebCore::HTMLFormattingElementList::remove):
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::Entry::operator==):
+ (WebCore::HTMLFormattingElementList::Entry::operator!=):
+
+2010-07-07 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Turn on adoptRef assertion for RefCounted
+ https://bugs.webkit.org/show_bug.cgi?id=41547
+
+ The WebCore part of this fixes all the assertions I saw in testing.
+
+ * html/FileReader.cpp:
+ (WebCore::FileReader::readAsBinaryString): Added null checks.
+ Callers from JavaScript can pass the wrong type, which becomes null.
+ (WebCore::FileReader::readAsText): Ditto.
+ (WebCore::FileReader::readAsDataURL): Ditto.
+
+ * html/FileStreamClient.h: Removed unneeded include.
+
+ * html/FileStreamProxy.cpp:
+ (WebCore::FileStreamProxy::FileStreamProxy): Made inline and moved
+ some of the code, including the ref, into the create function.
+ (WebCore::FileStreamProxy::create): Moved some of the code from
+ the constructor here. It's safe to ref once the object has been
+ created and adopted.
+
+ * html/FileStreamProxy.h: Changed create function to no longer be
+ inlined. Also removed an unneeded include.
+
+ * page/EventSource.cpp:
+ (WebCore::EventSource::EventSource): Made inline, changed arguments
+ and moved code that involves the need to ref this object into the
+ create function. Also moved failure handling out there since it's
+ cleaner to have a function that fails than a constructor. For
+ example, the function can return 0.
+ (WebCore::EventSource::create): Moved some of the code from the
+ constructor here.
+
+ * page/EventSource.h: Removed unneeded includes. Made the
+ creation function non-inline. Changed the arguments to the constructor.
+
+ * storage/StorageAreaSync.cpp:
+ (WebCore::StorageAreaSync::StorageAreaSync): Made inline. Moved
+ code that requires ref'ing this object out to the create function.
+ (WebCore::StorageAreaSync::create): Moved some of the code from the
+ constructor here.
+
+ * storage/StorageAreaSync.h: Removed unneeded includes. Changed
+ the type of one of the constructor arguments from String to
+ const String&.
+
+ * workers/SharedWorker.cpp:
+ (WebCore::SharedWorker::SharedWorker): Made inline. Moved most of
+ the setup code out of here into the create function.
+ (WebCore::SharedWorker::create): Moved the code here.
+
+ * workers/SharedWorker.h: Removed unneeded includes. Made the
+ create function non-inline. Marked the toSharedWorker override private
+ to catch people doing an unnecessary virtual function call if they
+ already have a SharedWorker*.
+
+ * workers/Worker.cpp:
+ (WebCore::Worker::Worker): Made inline. Moved most of the setup code
+ out of here into the create function.
+ (WebCore::Worker::create): Moved the code here.
+
+ * workers/Worker.h: Made the create function non-inline. Changed
+ the arguments to the constructor.
+
+2010-07-07 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ AX: when a node's role changes, the AX tree might need to be updated
+ https://bugs.webkit.org/show_bug.cgi?id=41784
+
+ Test: platform/mac/accessibility/update-children-when-aria-role-changes.html
+
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::AccessibilityRenderObject):
+ (WebCore::AccessibilityRenderObject::updateAccessibilityRole):
+
+2010-07-07 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ AX: when an element uses role="text" but no aria-label, it should default to textUnderElement()
+ https://bugs.webkit.org/show_bug.cgi?id=41780
+
+ Test: platform/mac/accessibility/static-text-role-uses-text-under-element.html
+
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::stringValue):
+ Fallback to textUnderElement() if text() does not return any explicitly set text.
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ Remove erroneous check to ignore text elements that didn't have a explicit text value.
+
+2010-07-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Document::ownerElement() should return an HTMLFrameOwnerElement
+ https://bugs.webkit.org/show_bug.cgi?id=41789
+
+ Change the return type of Document::ownerElement() to an HTMLFrameOwnerElement, for better
+ type checking. No behavioral changes.
+
+ * accessibility/mac/AccessibilityObjectWrapper.mm:
+ * dom/Document.cpp:
+ (WebCore::Document::ownerElement):
+ * dom/Document.h:
+ * editing/SelectionController.cpp:
+ * rendering/RenderBoxModelObject.cpp:
+ * rendering/RenderLayer.cpp:
+ * rendering/RenderView.cpp:
+
+2010-07-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ REGRESSION: GMail becomes blank after closing other tabs
+ https://bugs.webkit.org/show_bug.cgi?id=40421
+
+ RenderLayerCompositor's attach/detachRootPlatformLayer methods use
+ setNeedsStyleRecalc() in order to trigger acclerated compositing layers
+ to be hooked together across iframe boundaries. However, it was possible
+ for these to get called while inside of Document::recalcStyle(), which
+ is bad because it can cause the recalc to fail to get processed.
+
+ Fix this by using the existing queuePostAttachCallback() functionality
+ to delay the call to setNeedsStyleRecalc() if post-attach callbacks
+ are suspended (indicating that we're inside recalcStyle()).
+
+ No new tests because I wasn't able to make a test that shows the problem.
+
+ * dom/ContainerNode.h: Make queuePostAttachCallback() public.
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::postAttachCallbacksAreSuspended): Added; returns
+ whether s_attachDepth is non-zero.
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::attachRootPlatformLayer): Call scheduleNeedsStyleRecalc()
+ instead of setNeedsStyleRecalc().
+ (WebCore::RenderLayerCompositor::detachRootPlatformLayer): Ditto.
+ (WebCore::needsStyleRecalcCallback): Here we call setNeedsStyleRecalc().
+ (WebCore::RenderLayerCompositor::scheduleNeedsStyleRecalc):
+ (WebCore::RenderLayerCompositor::notifyIFramesOfCompositingChange):
+ * rendering/RenderLayerCompositor.h: Add scheduleNeedsStyleRecalc().
+
+2010-07-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Incorrect compositing order with negative z-index
+ https://bugs.webkit.org/show_bug.cgi?id=38959
+
+ When painting the contents of compositing layers whose phase is "GraphicsLayerPaintBackground"
+ (indicating that they are used for the background of elements with negative z-index children),
+ we need to paint the non-composited negative-z-order descendants at the end of the background phase, so
+ they appear behind composited negative-z-order descendants.
+
+ Test: compositing/z-order/negative-z-index.html
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+
+2010-07-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Incorrect compositing order with negative z-index
+ https://bugs.webkit.org/show_bug.cgi?id=38959
+
+ Prerequisite: adopt new paintList() method that was added when painting compositing layer contents.
+ No behavioral changes.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+
+2010-07-07 Adam Barth <abarth@webkit.org>
+
+ Unreviewed.
+
+ Fix ASSERT in Eric's previous patch. I think he tested his patch in
+ Release and not Debug.
+
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::Entry::Entry):
+ (WebCore::HTMLFormattingElementList::findIndex):
+
+2010-07-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Grease the TreeBuilder's lightning
+ https://bugs.webkit.org/show_bug.cgi?id=41756
+
+ Brings the new TreeBuilder from 7s to 3s on the parser benchmark.
+ This makes performance comparable to the old parser.
+
+ We have not begun to fight! There is so much fat left on these bones.
+
+ * html/HTMLFormattingElementList.cpp:
+ (WebCore::HTMLFormattingElementList::find):
+ (WebCore::HTMLFormattingElementList::bookmarkFor):
+ (WebCore::HTMLFormattingElementList::insertAt):
+ (WebCore::HTMLFormattingElementList::remove):
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::findIndex):
+
+2010-07-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ HTMLTreeBuilder is way too slow
+ https://bugs.webkit.org/show_bug.cgi?id=41754
+
+ This takes us from 14s to 7s on our parsing benchmark.
+ That's still much slower than the old tree builder, but there
+ is a huge amount of fat left to trim.
+
+ Vector<T> wasn't able to inline all the Entry functions when
+ they were buried in the cpp. Turns out the active formatting elements
+ list is very hot.
+
+ I'm not sure Vector<T> is going to be the right data structure for us
+ in the end, but it has done alright for bring-up.
+
+ * html/HTMLFormattingElementList.cpp:
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::Entry::Entry):
+ (WebCore::HTMLFormattingElementList::Entry::~Entry):
+ (WebCore::HTMLFormattingElementList::Entry::isMarker):
+ (WebCore::HTMLFormattingElementList::Entry::element):
+ (WebCore::HTMLFormattingElementList::Entry::replaceElement):
+ (WebCore::HTMLFormattingElementList::Entry::operator==):
+ (WebCore::HTMLFormattingElementList::Entry::operator!=):
+
+2010-07-06 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Barth.
+
+ More OwnPtr work, including making clear set the pointer to 0 before deletion
+ https://bugs.webkit.org/show_bug.cgi?id=41727
+
+ * WebCore.exp.in: Updated.
+
+ * css/CSSSelector.h:
+ (WebCore::CSSSelector::RareData::RareData): Use adoptPtr.
+ (WebCore::CSSSelector::createRareData): Ditto.
+ * dom/SpaceSplitString.h:
+ (WebCore::SpaceSplitString::SpaceSplitString): Ditto.
+ (WebCore::SpaceSplitString::set): Ditto.
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::CachedFrame): Ditto.
+ (WebCore::CachedFrame::setCachedFramePlatformData): Ditto.
+
+ * history/CachedFrame.h: Use PassOwnPtr.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::CallCacheListenerTask::create): Use adoptPtr.
+ * loader/appcache/ApplicationCacheStorage.cpp:
+ (WebCore::ApplicationCacheStorage::storeCopyOfCache): Ditto.
+ * platform/PurgeableBuffer.h:
+ (WebCore::PurgeableBuffer::create): Ditto.
+ * platform/graphics/GlyphMetricsMap.h:
+ (WebCore::::locatePageSlowCase): Ditto.
+ * platform/graphics/GraphicsLayer.h:
+ (WebCore::AnimationValue::AnimationValue): Ditto.
+ (WebCore::TransformAnimationValue::TransformAnimationValue): Ditto.
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayer::create): Ditto.
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::boundsForGlyph): Ditto.
+ * platform/mac/PurgeableBufferMac.cpp:
+ (WebCore::PurgeableBuffer::create): Ditto.
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::setHorizontalOverflowPositions): Ditto.
+ (WebCore::InlineFlowBox::setVerticalOverflowPositions): Ditto.
+ * rendering/RootInlineBox.h:
+ (WebCore::RootInlineBox::floats): Ditto.
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::inheritAnimations): Ditto.
+ (WebCore::InheritedFlags::inheritTransitions): Ditto.
+
+ * rendering/style/SVGRenderStyleDefs.h: Use PassOwnPtr.
+
+2010-07-07 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=41772
+ Add basic piping for BackForwardControllerClient.
+
+ * WebCore.exp.in:
+ * WebCore.xcodeproj/project.pbxproj:
+ * history/BackForwardController.cpp:
+ (WebCore::BackForwardController::BackForwardController):
+ * history/BackForwardControllerClient.h:
+ * page/Page.cpp:
+ (WebCore::Page::Page):
+ * page/Page.h:
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::dataChanged):
+
+2010-07-07 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Unreviewed build fix after r62577.
+
+ [EFL] build fix after r62577
+ https://bugs.webkit.org/show_bug.cgi?id=41764
+
+ No new functionality so no new tests.
+
+2010-07-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Scrollbars sometimes go dead and stop scrolling the view
+ https://bugs.webkit.org/show_bug.cgi?id=41711
+
+ Rework the setGtkAdjustment function slightly, make it have an
+ early return, and be more readable.
+
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::setGtkAdjustments):
+
+2010-07-07 Kristian Monsen <kristianm@google.com>
+
+ Reviewed by Steve Block.
+
+ Updating Android to use the UserGestureIndicator class instead of Android specific code.
+ The rest of the changes are in parts of the Android port which are yet to be upstreamed.
+
+ No change in behavior, so no new test.
+
+ * platform/network/android/ResourceRequest.h:
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::doUpdateResourceRequest):
+
+2010-07-07 Andy Estes <aestes@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Allow a beforeload listener to prevent loading of images in <object> tags.
+ https://bugs.webkit.org/show_bug.cgi?id=41027
+ <rdar://problem/8120596>
+
+ Tests: fast/dom/beforeload/image-object-before-load-innerHTML.html
+ fast/dom/beforeload/image-object-before-load.html
+
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::attach): Do not call
+ RenderImage::setCachedImage() at the end of attach(). Instead, allow
+ this to happen conditionally after beforeload is dispatched.
+ * loader/ImageLoader.cpp:
+ (WebCore::ImageLoader::dispatchPendingBeforeLoadEvent): Render fallback
+ content if an object's load was cancelled.
+
+2010-07-06 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ <use> on <font-face> causes crashes, if SVGUseElement gets detached
+ https://bugs.webkit.org/show_bug.cgi?id=41621
+
+ Do not call removeFromMappedElementSheet() from the SVGFontFaceElement destructor,
+ as that can potentially cause the element to be reattached while destructing.
+
+ In order to fix the crash in the testcase, the order of calling the base-class detach
+ method in SVGUseElement and the instance/shadow tree destruction has to be reversed,
+ matching the order in removedFromDocument().
+
+ Test: svg/custom/use-font-face-crash.svg
+
+ * svg/SVGFontFaceElement.cpp:
+ (WebCore::SVGFontFaceElement::~SVGFontFaceElement): Remove removeFromMappedElementSheet() call.
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::detach): Reverse order of calling base-class detach method and instance/shadow tree destruction.
+
+2010-07-07 Steve Block <steveblock@google.com>
+
+ Reviewed by Adam Barth.
+
+ document.createEvent() should support DeviceOrientationEvent
+ https://bugs.webkit.org/show_bug.cgi?id=41618
+
+ Tests: fast/dom/DeviceOrientation/create-event.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::createEvent):
+
+2010-07-07 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: show functions from internal browser scripts on the call stack if they
+ are there.
+ https://bugs.webkit.org/show_bug.cgi?id=41762
+
+ * English.lproj/localizedStrings.js:
+ * inspector/front-end/CallStackSidebarPane.js:
+ (WebInspector.CallStackSidebarPane.prototype.update):
+
+2010-07-07 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: All RefPtr arguments and return values should be
+ changed to PassRefPtr whenever it is possible according to common practice.
+ https://bugs.webkit.org/show_bug.cgi?id=41759
+
+ * inspector/CodeGeneratorInspector.pm:
+ * inspector/InspectorTimelineAgent.cpp:
+ (WebCore::InspectorTimelineAgent::pushGCEventRecords):
+ (WebCore::InspectorTimelineAgent::didInstallTimer):
+ (WebCore::InspectorTimelineAgent::didRemoveTimer):
+ (WebCore::InspectorTimelineAgent::didScheduleResourceRequest):
+ (WebCore::InspectorTimelineAgent::willSendResourceRequest):
+ (WebCore::InspectorTimelineAgent::didFinishLoadingResource):
+ (WebCore::InspectorTimelineAgent::didMarkTimeline):
+ (WebCore::InspectorTimelineAgent::didMarkDOMContentEvent):
+ (WebCore::InspectorTimelineAgent::didMarkLoadEvent):
+ (WebCore::InspectorTimelineAgent::addRecordToTimeline):
+ (WebCore::InspectorTimelineAgent::setHeapSizeStatistic):
+ (WebCore::InspectorTimelineAgent::pushCurrentRecord):
+ * inspector/InspectorTimelineAgent.h:
+ (WebCore::InspectorTimelineAgent::TimelineRecordEntry::TimelineRecordEntry):
+ * inspector/TimelineRecordFactory.cpp:
+ (WebCore::TimelineRecordFactory::createGenericRecord):
+ (WebCore::TimelineRecordFactory::createGCEventData):
+ (WebCore::TimelineRecordFactory::createFunctionCallData):
+ (WebCore::TimelineRecordFactory::createEventDispatchData):
+ (WebCore::TimelineRecordFactory::createGenericTimerData):
+ (WebCore::TimelineRecordFactory::createTimerInstallData):
+ (WebCore::TimelineRecordFactory::createXHRReadyStateChangeData):
+ (WebCore::TimelineRecordFactory::createXHRLoadData):
+ (WebCore::TimelineRecordFactory::createEvaluateScriptData):
+ (WebCore::TimelineRecordFactory::createMarkTimelineData):
+ (WebCore::TimelineRecordFactory::createScheduleResourceRequestData):
+ (WebCore::TimelineRecordFactory::createResourceSendRequestData):
+ (WebCore::TimelineRecordFactory::createResourceReceiveResponseData):
+ (WebCore::TimelineRecordFactory::createResourceFinishData):
+ (WebCore::TimelineRecordFactory::createReceiveResourceData):
+ (WebCore::TimelineRecordFactory::createPaintData):
+ (WebCore::TimelineRecordFactory::createParseHTMLData):
+ * inspector/TimelineRecordFactory.h:
+
+2010-07-07 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Initial WebKit2 implementation
+ https://bugs.webkit.org/show_bug.cgi?id=40233
+
+ Export some event conversion functions needed for WebKit2.
+
+ * platform/PlatformKeyboardEvent.h:
+ * platform/qt/PlatformKeyboardEventQt.cpp:
+ (WebCore::keyIdentifierForQtKeyCode):
+ (WebCore::windowsKeyCodeForKeyEvent):
+
+2010-07-06 Steve Block <steveblock@google.com>
+
+ Reviewed by Adam Barth.
+
+ DeviceOrientationEventConstructor should be exposed at window.DeviceOrientationEvent
+ https://bugs.webkit.org/show_bug.cgi?id=41685
+
+ Test: fast/dom/Window/window-properties-device-orientation.html
+ fast/dom/DeviceOrientation/window-property.txt
+
+ * page/DOMWindow.idl:
+
+2010-07-07 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r62645.
+ http://trac.webkit.org/changeset/62645
+ https://bugs.webkit.org/show_bug.cgi?id=41757
+
+ "Broken inspector tests on several platforms" (Requested by
+ eseidel on #webkit).
+
+ * inspector/front-end/ScriptView.js:
+ (WebInspector.ScriptView.prototype._addBreakpoint):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel):
+ (WebInspector.ScriptsPanel.prototype._resourceLoadingFinished):
+ (WebInspector.ScriptsPanel.prototype._breakpointAdded):
+ (WebInspector.ScriptsPanel.prototype._scriptOrResourceForURLAndLine):
+ (WebInspector.ScriptsPanel.prototype._showScriptOrResource):
+ (WebInspector.ScriptsPanel.prototype._toggleBreakpointsClicked):
+ * inspector/front-end/SourceView.js:
+ (WebInspector.SourceView.prototype._addBreakpoint):
+
+2010-07-07 Steve Block <steveblock@google.com>
+
+ Reviewed by Adam Barth.
+
+ JavaInstanceV8 needs to push a local reference frame to avoid table overflow.
+ https://bugs.webkit.org/show_bug.cgi?id=41516
+
+ This change is required to help prevent the Java virtual machine from
+ running out of local references. The Java virtual machine supports only
+ a limited number of local references. Normally, local references are
+ cleared when the native method returns.
+
+ This change adds calls to PushLocalFrame() and PopLocalFrame() around
+ each invocation of a method on JavaInstance. These calls instruct the
+ virtual machine to clear local references when the frame is popped.
+ This means that in the case where many calls to JavaInstance methods
+ are made within the same native call, local references are cleared as
+ soon as they are no longer needed, thus conserving references.
+
+ This change mirrors exactly JavaInstanceJSC.
+
+ No new tests.
+
+ * bridge/jni/v8/JavaInstanceV8.cpp:
+ (JavaInstance::virtualBegin):
+ (JavaInstance::virtualEnd):
+ * bridge/jni/v8/JavaInstanceV8.h:
+
+2010-07-06 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Inspector should remember the size of sidebars set by the user
+ https://bugs.webkit.org/show_bug.cgi?id=19207
+
+ * inspector/front-end/AbstractTimelinePanel.js:
+ (WebInspector.AbstractTimelinePanel):
+ * inspector/front-end/AuditsPanel.js:
+ (WebInspector.AuditsPanel):
+ * inspector/front-end/ConsolePanel.js:
+ (WebInspector.ConsolePanel):
+ * inspector/front-end/ElementsPanel.js:
+ (WebInspector.ElementsPanel.prototype.rightSidebarResizerDragEnd):
+ * inspector/front-end/Panel.js:
+ (WebInspector.Panel):
+ (WebInspector.Panel.prototype.get toolbarItemClass):
+ (WebInspector.Panel.prototype.show):
+ (WebInspector.Panel.prototype.createSidebar):
+ (WebInspector.Panel.prototype.get _sidebarWidthSettingName):
+ (WebInspector.Panel.prototype._endSidebarDragging):
+ (WebInspector.Panel.prototype.updateSidebarWidth):
+ (WebInspector.Panel.prototype.restoreSidebarWidth):
+ (WebInspector.Panel.prototype.saveSidebarWidth):
+ * inspector/front-end/ProfilesPanel.js:
+ (WebInspector.ProfilesPanel):
+ * inspector/front-end/ResourcesPanel.js:
+ (WebInspector.ResourcesPanel):
+ (WebInspector.ResourcesPanel.prototype.resourceTrackingWasEnabled):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel):
+ (WebInspector.ScriptsPanel.prototype._endSidebarResizeDrag):
+ (WebInspector.ScriptsPanel.prototype._sidebarResizeDrag):
+ (WebInspector.ScriptsPanel.prototype.setSidebarWidth):
+ * inspector/front-end/Settings.js:
+ (WebInspector.populateApplicationSettings):
+ * inspector/front-end/StoragePanel.js:
+ (WebInspector.StoragePanel):
+ * inspector/front-end/TimelinePanel.js:
+ (WebInspector.TimelinePanel):
+
+2010-07-05 Steve Block <steveblock@google.com>
+
+ Reviewed by Adam Barth.
+
+ DeviceOrientation should be renamed to DeviceOrientationController
+ https://bugs.webkit.org/show_bug.cgi?id=41608
+
+ No new tests, renaming only.
+
+ * Android.mk:
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/DeviceOrientation.cpp: Removed.
+ * dom/DeviceOrientation.h: Removed.
+ * dom/DeviceOrientationController.cpp: Copied from WebCore/dom/DeviceOrientation.cpp.
+ (WebCore::DeviceOrientationController::DeviceOrientationController):
+ (WebCore::DeviceOrientationController::onDeviceOrientationChange):
+ * dom/DeviceOrientationController.h: Copied from WebCore/dom/DeviceOrientation.h.
+ * page/Page.cpp:
+ (WebCore::Page::Page):
+ * page/Page.h:
+ (WebCore::Page::deviceOrientationController):
+
+2010-07-07 Pavel Podivilov <podivilov@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: do not activate all breakpoints on page reload
+ https://bugs.webkit.org/show_bug.cgi?id=41461
+
+ Test: inspector/debugger-breakpoints-not-activated-on-reload.html
+
+ * inspector/front-end/ScriptView.js:
+ (WebInspector.ScriptView.prototype._addBreakpoint):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel):
+ (WebInspector.ScriptsPanel.prototype._breakpointAdded):
+ (WebInspector.ScriptsPanel.prototype.toggleBreakpointsClicked):
+ * inspector/front-end/SourceView.js:
+ (WebInspector.SourceView.prototype._addBreakpoint):
+
+2010-07-07 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Not reviewed. Rollout r62633 - test crashes after some last-minute modifications.
+
+ * svg/SVGFontFaceElement.cpp:
+ (WebCore::SVGFontFaceElement::~SVGFontFaceElement):
+
+2010-07-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix </html> handling in before head mode
+ https://bugs.webkit.org/show_bug.cgi?id=41752
+
+ Covered by html5lib/runner.html.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ </div> pops too many <div> elements in body
+ https://bugs.webkit.org/show_bug.cgi?id=41751
+
+ Another missing return!
+
+ While tracking this down I added some debugging code to both the
+ open elements stack and the active formatting elements list.
+
+ I also unwrapped a very long || chain to make it more readable.
+
+ * html/HTMLElementStack.cpp:
+ (WebCore::HTMLElementStack::show):
+ * html/HTMLElementStack.h:
+ * html/HTMLFormattingElementList.cpp:
+ (WebCore::HTMLFormattingElementList::show):
+ * html/HTMLFormattingElementList.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ HTMLTreeBuilder needs to handle <table><input>
+ https://bugs.webkit.org/show_bug.cgi?id=41744
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Teach HTMLTreeBuilder how to handle <button><button>
+ https://bugs.webkit.org/show_bug.cgi?id=41743
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Teach TreeBuilder how to handle <form><form>
+ https://bugs.webkit.org/show_bug.cgi?id=41741
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ <table> should auto-close <p> when not in quirks mode
+ https://bugs.webkit.org/show_bug.cgi?id=41740
+
+ This is already covered by multiple tests in html5lib/runner.html
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Make "in body" character handling reconstruct active formatting elements
+ https://bugs.webkit.org/show_bug.cgi?id=41739
+
+ This fixes a bunch of tests, and due to some other bug in our
+ formatting code, regresses two. I'll fix that bug in a separate
+ patch.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCharacter):
+
+2010-07-06 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Darin Adler.
+
+ <use> on <font-face> causes crashes, if SVGUseElement gets detached
+ https://bugs.webkit.org/show_bug.cgi?id=41621
+
+ Do not call removeFromMappedElementSheet() from the destructor, as the call to document()->updateStyleSelector() that can potentially
+ cause the element to be reattached while destructing. It's not needed at all, because removedFromDocument() is called before destruction,
+ which already calls removeFromMappedElementSheet() - at this point it's still safe to update the style selector.
+
+ The crash is reproducable when using <use> on <font-face>.
+
+ Test: svg/custom/use-font-face-crash.svg
+
+ * svg/SVGFontFaceElement.cpp:
+ (WebCore::SVGFontFaceElement::~SVGFontFaceElement):
+
+2010-07-07 Hayato Ito <hayato@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Rolling out 'page-break-inside:avoid' part of the r54929.
+ Rebased the related layout tests, which are now expected to fail, as well.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41532
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintChildren):
+
+2010-07-07 Mark Rowe <mrowe@apple.com>
+
+ Fix failures in a handful of Java-related tests.
+
+ * WebCore.exp.in: Remove an extraneous ENABLE_ from an #if so that the condition
+ evalutes to true when we expect it to.
+
+2010-07-06 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Joseph Pecoraro.
+
+ Web Inspector: provide line numbers for inline styles.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41691
+
+ Test: inspector/styles-source-lines-inline.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseSheet):
+ * css/CSSParser.h:
+ * css/CSSStyleSheet.cpp:
+ (WebCore::CSSStyleSheet::parseString):
+ (WebCore::CSSStyleSheet::parseStringAtLine):
+ * css/CSSStyleSheet.h:
+ * dom/StyleElement.cpp:
+ (WebCore::StyleElement::process):
+ (WebCore::StyleElement::createSheet):
+ * dom/StyleElement.h:
+ * html/HTMLStyleElement.cpp:
+ (WebCore::HTMLStyleElement::HTMLStyleElement):
+ (WebCore::HTMLStyleElement::finishParsingChildren):
+ * html/HTMLStyleElement.h:
+ * inspector/InspectorCSSStore.cpp:
+ (WebCore::InspectorCSSStore::getRuleRangesForStyleSheet):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::buildObjectForRule):
+ * inspector/front-end/DOMAgent.js:
+ (WebInspector.CSSStyleDeclaration.parseRule):
+ * inspector/front-end/StylesSidebarPane.js:
+ (WebInspector.StylePropertiesSection.else.linkifyUncopyable):
+ (WebInspector.StylePropertiesSection):
+
+2010-07-06 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Jon Honeycutt.
+
+ <rdar://problem/8163651> Wrong value type being supplied for kCTTypesetterOptionForcedEmbeddingLevel key
+
+ No change in behavior, so no new test.
+
+ * platform/graphics/mac/ComplexTextControllerCoreText.cpp:
+ (WebCore::ComplexTextController::collectComplexTextRunsForCharactersCoreText): Use CFNumber instances
+ as the values of the kCTTypesetterOptionForcedEmbeddingLevel key, instead of CFBooleans.
+
+2010-07-06 Mark Rowe <mrowe@apple.com>
+
+ Fix production builds on Mac OS X.
+
+ * DerivedSources.make: Don't try and generate the export file during the installhdrs build phase.
+ It's not useful until much later in the build process, and it's not possible to generate it until
+ after the tool has been compiled anyway.
+ * WebCore.xcodeproj/project.pbxproj: Tweak how the ICU and forwarding headers are copied so that it
+ works in production builds once more.
+
+2010-07-06 Steve Falkenburg <sfalken@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Expose URL matching from WebUserContentURLPattern
+ https://bugs.webkit.org/show_bug.cgi?id=41726
+ <rdar://problem/7910144>
+
+ * WebCore.exp.in: Export UserContentURLPattern::matches for use in WebKit.
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix <nobr><nobr> case in HTMLTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41735
+
+ We were both not handling <nobr> correctly, as well as
+ never hitting the <nobr> case because our formatting
+ elements check was overzealous.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement start table tag in table mode
+ https://bugs.webkit.org/show_bug.cgi?id=41736
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processTableEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement "act as if the banana has been peeled" (for lack of a better term)
+ https://bugs.webkit.org/show_bug.cgi?id=41734
+
+ The spec has a tricky passage that says "whenever a node would be
+ inserted into the current node, it must instead be foster parented."
+ This patch attempts to implement that requirement.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::attach):
+ (WebCore::HTMLConstructionSite::HTMLConstructionSite):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlElement):
+ (WebCore::HTMLConstructionSite::insertHTMLHeadElement):
+ (WebCore::HTMLConstructionSite::insertHTMLBodyElement):
+ (WebCore::HTMLConstructionSite::insertScriptElement):
+ (WebCore::HTMLConstructionSite::fosterParent):
+ * html/HTMLConstructionSite.h:
+ (WebCore::HTMLConstructionSite::RedirectToFosterParentGuard::RedirectToFosterParentGuard):
+ (WebCore::HTMLConstructionSite::RedirectToFosterParentGuard::~RedirectToFosterParentGuard):
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix </optgroup> in "in select" mode
+ https://bugs.webkit.org/show_bug.cgi?id=41733
+
+ I had to add a oneBelowTop() accessor.
+ I added some ASSERTs after looking at the fragment case
+ documentation. I'm now convinced that top() and oneBeforeTop()
+ should never be NULL, so we just ASSERT they aren't.
+
+ This is a very obscure corner of the HTML spec, but at least
+ we have a test for it. This makes one more html5lib test pass.
+
+ * html/HTMLConstructionSite.h:
+ (WebCore::HTMLConstructionSite::oneBelowTop):
+ * html/HTMLElementStack.cpp:
+ (WebCore::HTMLElementStack::topRecord):
+ (WebCore::HTMLElementStack::top):
+ (WebCore::HTMLElementStack::oneBelowTop):
+ * html/HTMLElementStack.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix "in row" "Anything else" handling of end tags
+ https://bugs.webkit.org/show_bug.cgi?id=41731
+
+ I also fixed </br> handling to follow the spec more closely
+ since it implementation was old and didn't use all our
+ new processFake* hotness.
+
+ This is already covered by 3 tests, however we don't
+ pass them yet, due to lack of table foster parenting
+ code (which Adam is working on as we speak).
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-06 Mark Rowe <mrowe@apple.com>
+
+ Fix clean builds on Mac OS X.
+
+ Since "Copy Forwarding and ICU Headers" was split in to a separate target
+ from the WebCore framework it no longer had automatica access to the
+ PRIVATE_HEADERS_FOLDER_PATH variable. This caused it to copy the header
+ files in to the wrong location. Fix that by giving PRIVATE_HEADERS_FOLDER_PATH
+ its correct value and ensuring that the path exists.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-06 Sam Weinig <sam@webkit.org>
+
+ Fix Gtk build.
+
+ * GNUmakefile.am:
+
+2010-07-06 Mark Rowe <mrowe@apple.com>
+
+ Tiger build fix.
+
+ Don't use WebCore's LDFLAGS when building WebCoreExportFileGenerator.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ "In cell" does not correctly handle <td><tr> or <td><td>
+ https://bugs.webkit.org/show_bug.cgi?id=41729
+
+ This change is mostly cleanup to try and prevent forgetting
+ tag name checks in the future by using inlines to reduce
+ copy/paste code.
+
+ 3 little bugs in InCellMode:
+ - Missing trTag from the long or statement (reason for the cleanup)
+ - Used || instead of &&
+ - Forgot to reprocess the tag after closeTheCell()
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move fosterParent to HTMLConstructionSite
+ https://bugs.webkit.org/show_bug.cgi?id=41728
+
+ This paves the way for handling the default case of InTableMode
+ properly.
+
+ * html/HTMLConstructionSite.cpp:
+ (WebCore::HTMLConstructionSite::fosterParent):
+ * html/HTMLConstructionSite.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move HTMLConstructionSite to its own file. No behavior change.
+
+ * Android.mk:
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * html/HTMLConstructionSite.cpp: Copied from WebCore/html/HTMLTreeBuilder.cpp.
+ (WebCore::HTMLNames::hasImpliedEndTag):
+ (WebCore::HTMLConstructionSite::attach):
+ (WebCore::HTMLConstructionSite::HTMLConstructionSite):
+ (WebCore::HTMLConstructionSite::~HTMLConstructionSite):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML):
+ (WebCore::HTMLConstructionSite::mergeAttributesFromTokenIntoElement):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagInBody):
+ (WebCore::HTMLConstructionSite::insertHTMLBodyStartTagInBody):
+ * html/HTMLConstructionSite.h: Copied from WebCore/html/HTMLTreeBuilder.h.
+ * html/HTMLTreeBuilder.cpp:
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Mark Rowe <mrowe@apple.com>
+
+ Build fix.
+
+ The path to the generated file needs to be relative to the built product directory,
+ not to the project file.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2010-07-06 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <http://webkit.org/b/41725> REGRESSION(r62283): No longer possible to build for Tiger from SnowLeopard due to export file shenanigans
+
+ Change how the exports file is generated. Rather than having the logic for which symbols
+ to include be encoded in a Makefile that concatenated separate files, the logic is now
+ encoded as #if's in the base exports file. This ensures that the exact same preprocessor
+ settings are used when determining which symbols to export as when compiling the code that
+ defines the symbols.
+
+ * DerivedSources.make: Remove logic that determines which export files to concatenate.
+ Replace with an invocation of WebCoreExportFileGenerator.
+ * WebCore.3DRendering.exp: Removed.
+ * WebCore.AcceleratedCompositing.exp: Removed.
+ * WebCore.ClientBasedGeolocation.exp: Removed.
+ * WebCore.ContextMenus.exp: Removed.
+ * WebCore.DashboardSupport.exp: Removed.
+ * WebCore.DragSupport.exp: Removed.
+ * WebCore.Geolocation.exp: Removed.
+ * WebCore.Inspector.exp: Removed.
+ * WebCore.JNI.exp: Removed.
+ * WebCore.NPAPI.exp: Removed.
+ * WebCore.OrientationEvents.exp: Removed.
+ * WebCore.PluginHostProcess.exp: Removed.
+ * WebCore.ProtectionSpaceAuthCallback.exp: Removed.
+ * WebCore.SVG.Animation.exp: Removed.
+ * WebCore.SVG.Filters.exp: Removed.
+ * WebCore.SVG.ForeignObject.exp: Removed.
+ * WebCore.SVG.exp: Removed.
+ * WebCore.Tiger.exp: Removed.
+ * WebCore.Video.exp: Removed.
+ * WebCore.VideoProxy.exp: Removed.
+ * WebCore.exp.in: Renamed from WebCore/WebCore.base.exp. Merge the individual .exp
+ files in, wrapping the appropriate parts with the necessary #if's.
+ * WebCore.xcodeproj/project.pbxproj:
+ * make-exports-file-generator: Added.
+
+2010-07-06 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=41723
+ Add BackForwardController class
+
+ - Add BackForwardController which currently only forwards to the existing
+ BackForwardList implementation. This is a first step toward allowing
+ for a proxying BackForwardList implementation.
+
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * history/BackForwardController.cpp: Added.
+ (WebCore::BackForwardController::BackForwardController):
+ (WebCore::BackForwardController::~BackForwardController):
+ * history/BackForwardController.h: Added.
+ (WebCore::BackForwardController::client):
+ (WebCore::BackForwardController::list):
+ * history/BackForwardControllerClient.h: Added.
+ (WebCore::BackForwardControllerClient::~BackForwardControllerClient):
+ * page/Page.cpp:
+ (WebCore::Page::Page):
+ (WebCore::Page::~Page):
+ (WebCore::Page::backForwardList):
+ (WebCore::Page::goBack):
+ (WebCore::Page::goForward):
+ (WebCore::Page::canGoBackOrForward):
+ (WebCore::Page::goBackOrForward):
+ (WebCore::Page::getHistoryLength):
+ * page/Page.h:
+
+2010-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed.
+
+ Fixes regression on API test by disabling the scrollbars before
+ configuring the adjustments.
+
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::setGtkAdjustments):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add support for <li>, <dd> and <dt> nested tag closing
+ https://bugs.webkit.org/show_bug.cgi?id=41720
+
+ li, dd, and dt have nearly identical logic in HTML5, so I
+ attempted to make them share as much code as possible.
+
+ This fixes a bunch of subtests for html5lib/runner.html
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCloseWhenNestedTag):
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::furthestBlockForFormattingElement):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Factor HTMLConstructionSite out of HTMLTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41716
+
+ The HTMLContructionSite is the model object on which the
+ HTMLTreeBuilder (a controller) acts.
+
+ No behavior change. I'll move this class into its own file in a
+ followup patch.
+
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::at):
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
+ (WebCore::HTMLConstructionSite::HTMLConstructionSite):
+ (WebCore::HTMLTreeBuilder::passTokenToLegacyParser):
+ (WebCore::HTMLTreeBuilder::processDoctypeToken):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML):
+ (WebCore::HTMLConstructionSite::mergeAttributesFromTokenIntoElement):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagInBody):
+ (WebCore::HTMLConstructionSite::insertHTMLBodyStartTagInBody):
+ (WebCore::HTMLTreeBuilder::processFakePEndTagIfPInScope):
+ (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
+ (WebCore::HTMLTreeBuilder::closeTheCell):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processBodyEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::furthestBlockForFormattingElement):
+ (WebCore::HTMLTreeBuilder::findFosterParentFor):
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption):
+ (WebCore::HTMLTreeBuilder::processTrEndTagForInRow):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processComment):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ (WebCore::HTMLTreeBuilder::processDefaultForBeforeHTMLMode):
+ (WebCore::HTMLTreeBuilder::processStartTagForInHead):
+ (WebCore::HTMLConstructionSite::insertDoctype):
+ (WebCore::HTMLConstructionSite::insertComment):
+ (WebCore::HTMLConstructionSite::insertCommentOnDocument):
+ (WebCore::HTMLConstructionSite::insertCommentOnHTMLHtmlElement):
+ (WebCore::HTMLConstructionSite::createElementAndAttachToCurrent):
+ (WebCore::HTMLConstructionSite::insertHTMLHtmlElement):
+ (WebCore::HTMLConstructionSite::insertHTMLHeadElement):
+ (WebCore::HTMLConstructionSite::insertHTMLBodyElement):
+ (WebCore::HTMLConstructionSite::insertElement):
+ (WebCore::HTMLConstructionSite::insertSelfClosingElement):
+ (WebCore::HTMLConstructionSite::insertFormattingElement):
+ (WebCore::HTMLTreeBuilder::processGenericRCDATAStartTag):
+ (WebCore::HTMLTreeBuilder::processGenericRawTextStartTag):
+ (WebCore::HTMLConstructionSite::insertScriptElement):
+ (WebCore::HTMLTreeBuilder::processScriptStartTag):
+ (WebCore::HTMLConstructionSite::insertTextNode):
+ (WebCore::HTMLConstructionSite::createElement):
+ (WebCore::HTMLTreeBuilder::indexOfFirstUnopenFormattingElement):
+ (WebCore::HTMLTreeBuilder::reconstructTheActiveFormattingElements):
+ (WebCore::HTMLTreeBuilder::generateImpliedEndTagsWithExclusion):
+ (WebCore::HTMLTreeBuilder::generateImpliedEndTags):
+ * html/HTMLTreeBuilder.h:
+ (WebCore::HTMLConstructionSite::currentElement):
+ (WebCore::HTMLConstructionSite::openElements):
+ (WebCore::HTMLConstructionSite::activeFormattingElements):
+ (WebCore::HTMLConstructionSite::head):
+ (WebCore::HTMLConstructionSite::form):
+ (WebCore::HTMLConstructionSite::releaseForm):
+ (WebCore::HTMLConstructionSite::setForm):
+ (WebCore::HTMLConstructionSite::fragmentScriptingPermission):
+ (WebCore::HTMLConstructionSite::attach):
+
+2010-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Scrollbars sometimes go dead and stop scrolling the view
+ https://bugs.webkit.org/show_bug.cgi?id=41711
+
+ Fixes GtkScrolledWindow scrollbars not actually scrolling the page
+ in certain conditions. No tests because it is hard to reproduce,
+ and depends on interaction with a widget that is outside of the
+ WebView, which is tricky.
+
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::setGtkAdjustments):
+
+2010-07-06 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ Simplify access to element attribute map, removing unneeded functions
+ https://bugs.webkit.org/show_bug.cgi?id=41703
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::canShareStyleWithElement): Use the
+ attributeMap function instead of the mappedAttributes function.
+ (WebCore::CSSStyleSelector::styleForElement): Ditto.
+
+ * dom/Element.cpp:
+ (WebCore::Element::~Element): Renamed namedAttrMap to m_attributeMap.
+ (WebCore::Element::removeAttribute): Ditto.
+ (WebCore::Element::getAttribute): Ditto.
+ (WebCore::Element::setAttribute): Ditto.
+ (WebCore::Element::setAttributeMap): Ditto.
+ (WebCore::Element::hasAttributes): Ditto.
+ (WebCore::Element::createAttributeMap): Ditto.
+ (WebCore::Element::insertedIntoDocument): Ditto.
+ (WebCore::Element::removedFromDocument): Ditto.
+ (WebCore::Element::getURLAttribute): Ditto.
+
+ * dom/Element.h: Removed unneeded virtual attributes function.
+ Made read-only argument to attributes function default to false.
+ (Later, we'll eliminate this.) Renamed namedAttrMap to m_attributeMap
+ and made it private instead of protected.
+
+ * dom/StyledElement.cpp:
+ (WebCore::StyledElement::attributeChanged): Use attributeMap function
+ instead of namedAttrMap data member or mappedAttributes function.
+ (WebCore::StyledElement::classAttributeChanged): Ditto.
+ (WebCore::StyledElement::parseMappedAttribute): Ditto.
+
+ * dom/StyledElement.h: Removed mappedAttributes function and changed
+ callers to use attributeMap function instead.
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::setInputType): Use attributeMap instead of
+ mappedAttributes.
+ * svg/SVGStyledElement.cpp:
+ (WebCore::SVGStyledElement::getPresentationAttribute): Ditto.
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add a build rule that removes the old generated Obj-C bindings for PluginArray and MimeTypeArray.
+
+ * DerivedSources.make:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Unreviewed.
+
+ Make the remaining insertion modes explicit.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+
+2010-07-06 Alexey Proskuryakov <ap@apple.com>
+
+ Not reviewed, fixing a simple copy/paste mistake.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41156
+ Cross origin XMLHttpRequest should log the reason why connection failed
+
+ Covered by xmlhttprequest/access-control-basic-non-simple-deny-cached.html
+
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders): Fix incorrectly
+ copy/pasted header field name.
+
+2010-07-06 Xan Lopez <xlopez@igalia.com>
+
+ GTK+ fixes for the DOM plug-in renaming Apocalypse.
+
+ * GNUmakefile.am:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Yet another Windows build fix.
+
+ * DerivedSources.cpp:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Fix Windows build.
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ More build fixes.
+
+ * WebCore.gypi:
+ * WebCore.pro:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Try to fix Qt build.
+
+ * WebCore.pro:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Attempt to fix GTK+ build.
+
+ * GNUmakefile.am:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Address reviewer comments from https://bugs.webkit.org/show_bug.cgi?id=41671
+
+ Deploy isTableBodyContextTag where possible. No behavior change.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Build fixes.
+
+ * WebCore.gypi:
+ * bindings/js/JSBindingsAllInOne.cpp:
+
+2010-07-06 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ DOM plug-in related renames
+ https://bugs.webkit.org/show_bug.cgi?id=41709
+
+ This is in preparation for using "Plugin" for something other than a DOM object.
+
+ MimeType => DOMMimeType
+ MimeTypeArray => DOMMimeTypeArray
+ Plugin => DOMPlugin
+ PluginArray => DOMPluginArray
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pri:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSDOMMimeTypeArrayCustom.cpp: Added.
+ (WebCore::JSDOMMimeTypeArray::canGetItemsForName):
+ (WebCore::JSDOMMimeTypeArray::nameGetter):
+ * bindings/js/JSDOMPluginArrayCustom.cpp: Added.
+ (WebCore::JSDOMPluginArray::canGetItemsForName):
+ (WebCore::JSDOMPluginArray::nameGetter):
+ * bindings/js/JSDOMPluginCustom.cpp: Added.
+ (WebCore::JSDOMPlugin::canGetItemsForName):
+ (WebCore::JSDOMPlugin::nameGetter):
+ * bindings/js/JSMimeTypeArrayCustom.cpp: Removed.
+ * bindings/js/JSPluginArrayCustom.cpp: Removed.
+ * bindings/js/JSPluginCustom.cpp: Removed.
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * page/DOMWindow.idl:
+ * page/Navigator.cpp:
+ (WebCore::Navigator::plugins):
+ (WebCore::Navigator::mimeTypes):
+ * page/Navigator.h:
+ * page/Navigator.idl:
+ * plugins/DOMMimeType.cpp: Added.
+ (WebCore::DOMMimeType::DOMMimeType):
+ (WebCore::DOMMimeType::~DOMMimeType):
+ (WebCore::DOMMimeType::type):
+ (WebCore::DOMMimeType::suffixes):
+ (WebCore::DOMMimeType::description):
+ (WebCore::DOMMimeType::enabledPlugin):
+ * plugins/DOMMimeType.h: Added.
+ (WebCore::DOMMimeType::create):
+ (WebCore::DOMMimeType::mimeClassInfo):
+ * plugins/DOMMimeType.idl: Added.
+ * plugins/DOMMimeTypeArray.cpp: Added.
+ (WebCore::DOMMimeTypeArray::DOMMimeTypeArray):
+ (WebCore::DOMMimeTypeArray::~DOMMimeTypeArray):
+ (WebCore::DOMMimeTypeArray::length):
+ (WebCore::DOMMimeTypeArray::item):
+ (WebCore::DOMMimeTypeArray::canGetItemsForName):
+ (WebCore::DOMMimeTypeArray::namedItem):
+ (WebCore::DOMMimeTypeArray::getPluginData):
+ * plugins/DOMMimeTypeArray.h: Added.
+ (WebCore::DOMMimeTypeArray::create):
+ (WebCore::DOMMimeTypeArray::disconnectFrame):
+ * plugins/DOMMimeTypeArray.idl: Added.
+ * plugins/DOMPlugin.cpp: Added.
+ (WebCore::DOMPlugin::DOMPlugin):
+ (WebCore::DOMPlugin::~DOMPlugin):
+ (WebCore::DOMPlugin::name):
+ (WebCore::DOMPlugin::filename):
+ (WebCore::DOMPlugin::description):
+ (WebCore::DOMPlugin::length):
+ (WebCore::DOMPlugin::item):
+ (WebCore::DOMPlugin::canGetItemsForName):
+ (WebCore::DOMPlugin::namedItem):
+ * plugins/DOMPlugin.h: Added.
+ (WebCore::DOMPlugin::create):
+ (WebCore::DOMPlugin::pluginInfo):
+ * plugins/DOMPlugin.idl: Added.
+ * plugins/DOMPluginArray.cpp: Added.
+ (WebCore::DOMPluginArray::DOMPluginArray):
+ (WebCore::DOMPluginArray::~DOMPluginArray):
+ (WebCore::DOMPluginArray::length):
+ (WebCore::DOMPluginArray::item):
+ (WebCore::DOMPluginArray::canGetItemsForName):
+ (WebCore::DOMPluginArray::namedItem):
+ (WebCore::DOMPluginArray::refresh):
+ (WebCore::DOMPluginArray::pluginData):
+ * plugins/DOMPluginArray.h: Added.
+ (WebCore::DOMPluginArray::create):
+ (WebCore::DOMPluginArray::disconnectFrame):
+ * plugins/DOMPluginArray.idl: Added.
+ * plugins/MimeType.cpp: Removed.
+ * plugins/MimeType.h: Removed.
+ * plugins/MimeType.idl: Removed.
+ * plugins/MimeTypeArray.cpp: Removed.
+ * plugins/MimeTypeArray.h: Removed.
+ * plugins/MimeTypeArray.idl: Removed.
+ * plugins/Plugin.cpp: Removed.
+ * plugins/Plugin.h: Removed.
+ * plugins/Plugin.idl: Removed.
+ * plugins/PluginArray.cpp: Removed.
+ * plugins/PluginArray.h: Removed.
+ * plugins/PluginArray.idl: Removed.
+
+2010-07-06 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41156
+ Cross origin XMLHttpRequest should log the reason why connection failed
+
+ Covered by multiple existing tests.
+
+ * loader/CrossOriginAccessControl.cpp:
+ (WebCore::passesAccessControlCheck):
+ * loader/CrossOriginAccessControl.h:
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCacheItem::parse):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsRequest):
+ * loader/CrossOriginPreflightResultCache.h:
+ Functions that check requests now take a string argument for error explanation.
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Make an informative error
+ if crossOriginRequestPolicy is DenyCrossOriginRequests. This doesn't currently go anywhere,
+ since XMLHttpRequest is the only client that logs from didFail(), and it of course supports
+ cross origin requests.
+ (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): Make an informative
+ error when trying to e.g. send a cross origin XMLHttpRequest to ftp://.
+ (WebCore::DocumentThreadableLoader::didReceiveResponse): Pass error explanation from cross
+ origin access control code.
+ (WebCore::DocumentThreadableLoader::preflightFailure): Ditto.
+
+ * loader/DocumentThreadableLoader.h: preflightFailure() now takes arguments.
+
+ * platform/network/ResourceErrorBase.cpp:
+ * platform/network/ResourceErrorBase.h:
+ Added a constant for WebKit error domain.
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::didFail): Report the error to console.
+ One day we'll be able to also provide script file and line number here, so it's best to
+ pass error all the way down to XHR for reporting.
+
+2010-07-06 Pavel Podivilov <podivilov@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: convert script offset to webkit format in v8 ScriptDebugServer
+ https://bugs.webkit.org/show_bug.cgi?id=41696
+
+ * bindings/v8/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::dispatchDidParseSource):
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement InTableBodyMode
+ https://bugs.webkit.org/show_bug.cgi?id=41671
+
+ In the process of implementing this patch, Eric and I discussed some of
+ the high-level organization of the HTMLTreeBuilder class. We'd like to
+ split it up into smaller pieces. In the meantime, I've reordered some
+ of the declarations in the header to make the relations between the
+ different kinds of functions clearer.
+
+ * html/HTMLElementStack.cpp:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInTable):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInTable):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Leandro Pereira <leandro@profusion.mobi>
+
+ Unreviewed build fix.
+
+ [EFL] Generate code for RemoteInspector.
+
+ * CMakeLists.txt:
+
+2010-07-06 Varun Jain <varunjain@chromium.org>
+
+ Reviewed by Oliver Hunt.
+
+ Implementing CURVE_TO_CUBIC specification for SVG Path Segments. Currently,
+ curves specified in relative cordinates such as using createCurvetoCubicRel()
+ javascript function are not displayed.
+
+ SVG CurvetoCubic Path not implemented for relative cordinates
+ https://bugs.webkit.org/show_bug.cgi?id=41294
+
+ Test: svg/custom/svg-curve-with-relative-cordinates.html
+
+ * svg/SVGPathSegList.cpp:
+ (WebCore::SVGPathSegList::toPathData):
+
+2010-07-06 Alexey Proskuryakov <ap@apple.com>
+
+ Roll out patch for https://bugs.webkit.org/show_bug.cgi?id=41348 "Remove global variables
+ from XSLTProcessorLibxslt.cpp", as it causes crashes on buildbot.
+
+ * xml/XSLTProcessor.h:
+ (WebCore::XSLTProcessor::xslStylesheet):
+ (WebCore::XSLTProcessor::XSLTProcessor):
+ * xml/XSLTProcessorLibxslt.cpp:
+ (WebCore::docLoaderFunc):
+ (WebCore::setXSLTLoadCallBack):
+ (WebCore::xsltStylesheetPointer):
+ (WebCore::XSLTProcessor::transformToString):
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add processing for "in cell" mode and end tag processing for "in row"
+ https://bugs.webkit.org/show_bug.cgi?id=41688
+
+ I added several new table tests, not all of which pass yet.
+ Remaining failures exist due to lack of full "in table body" mode
+ support, which Adam has an outstanding patch for.
+ I believe all of the various branches added by this change are
+ covered now by our tests.
+
+ * html/HTMLElementStack.cpp:
+ - Added QualifiedName versions of inScope functions.
+ Using tagName.localName() is wrong for non-HTML elements,
+ in preparation for supporting foreign content we should centralize
+ our handling of QualifiedName in these functions instead of
+ sprinkling more .localName() calls around the code.
+ (WebCore::HTMLElementStack::inScope):
+ (WebCore::HTMLElementStack::inListItemScope):
+ (WebCore::HTMLElementStack::inTableScope):
+ * html/HTMLElementStack.h:
+ * html/HTMLFormattingElementList.cpp:
+ (WebCore::HTMLFormattingElementList::Entry::operator==):
+ (WebCore::HTMLFormattingElementList::Entry::operator!=):
+ - Calling element() on markers will assert, so use m_element.
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::closeTheCell):
+ - Implemented per the spec.
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ - Use isTableBodyContextTag where possible.
+ - Add InCellMode.
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):
+ - Use isTableBodyContextTag where possible.
+ (WebCore::HTMLTreeBuilder::processTrEndTagForInRow):
+ - This code is needed from at least two callsites.
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ - Add InCellMode and InRowMode
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Make <a> auto-close any parent <a> tag
+ https://bugs.webkit.org/show_bug.cgi?id=41684
+
+ I first fixed <a> to auto-close surrounding <a> tags.
+ That caused about 3 more test passes and one new test failure.
+ The test failure was due to <marque> not adding a marker
+ to the active formatting elements.
+
+ So I made a one-line change to fix <marque>. However that hit an
+ ASSERT due to a bug in indexOfFirstUnopenFormattingElement.
+ Fixing indexOfFirstUnopenFormattingElement fixed another bunch of
+ Adoption Agency related tests (clearly this was the second typo
+ which was causing all the adoption agency failures).
+
+ However fixing <marque> and indexOfFirstUnopenFormattingElement,
+ added yet another failure due to missing support for </p>
+ automatically adding an implicit <p> tag. Fixing </p> finally
+ got the tests to a stable (all improving) state.
+
+ In the end, these 4 minor (and very well tested) tweaks fixed a total
+ of 9 subtests in html5lib/runner.html.
+ Another subtest progressed, but did not fully pass due to missing
+ <table> foster-parenting support.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::indexOfFirstUnopenFormattingElement):
+
+2010-07-02 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Xan Lopez
+
+ [GStreamer] can't seek past maxTimeLoaded value
+ https://bugs.webkit.org/show_bug.cgi?id=40526
+
+ Extended the seekable range to the whole media. This allows video
+ played with progressive download to be seeked past the current
+ buffered position.
+
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivateGStreamer::maxTimeSeekable):
+ (WebCore::MediaPlayerPrivateGStreamer::updateStates):
+
+2010-07-06 Andreas Wictor <andreas.wictor@xcerion.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Remove global variables from XSLTProcessorLibxslt.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=41348
+
+ Remove the globalProcessor and globalDocLoader global variables
+ by using the _private field that exists on most libxml structs.
+
+ No new tests, existing tests covers this.
+
+ * xml/XSLTProcessor.h:
+ (WebCore::XSLTProcessor::sourceNode):
+ (WebCore::XSLTProcessor::XSLTProcessor):
+ * xml/XSLTProcessorLibxslt.cpp:
+ (WebCore::registredXSLTProcessors):
+ (WebCore::registredXSLStyleSheets):
+ (WebCore::docLoaderFunc):
+ (WebCore::xsltStylesheetPointer):
+ (WebCore::XSLTProcessor::transformToString):
+
+2010-07-06 Darin Adler <darin@apple.com>
+
+ Fix Cairo build.
+
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContext::createPlatformShadow): Removed unnneded release
+ in code that passes a PassOwnPtr to another PassOwnPtr.
+
+2010-07-06 Darin Adler <darin@apple.com>
+
+ Fix Chromium build.
+
+ * platform/graphics/skia/SkiaUtils.cpp:
+ (WebCore::scratchContext): Use leakPtr instead of release.
+
+2010-07-06 Martin Robinson <mrobinson@igalia.com>
+
+ Unreviewed.
+
+ Build fix after r62549.
+
+ * GNUmakefile.am: Generate RemoteInspector files by manually listing
+ them instead of building them into libWebCoreJS.la.
+
+2010-07-06 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr
+ https://bugs.webkit.org/show_bug.cgi?id=41320
+
+ Made code changes required because of the change to the release function.
+ The equivalent to the old release function is now named leakPtr and
+ should be used sparingly. The new release function returns a PassOwnPtr.
+
+ * css/CSSFontFaceSource.cpp:
+ (WebCore::CSSFontFaceSource::getFontData): Changed code to call
+ leakPtr instead of release.
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::addProperty): Ditto.
+
+ * css/CSSSegmentedFontFace.cpp:
+ (WebCore::CSSSegmentedFontFace::getFontData): Removed unneeded type
+ casting. Not sure why this changed the type to FontData* and then
+ casted back to SimpleFontData*.
+
+ * css/MediaQuery.cpp:
+ (WebCore::MediaQuery::MediaQuery): Removed call to release on a
+ PassOwnPtr, since the data member is now an OwnPtr.
+ (WebCore::MediaQuery::~MediaQuery): Removed now-unneeded delete.
+ * css/MediaQuery.h: Changed m_expressions to be an OwnPtr.
+
+ * html/HTMLToken.h:
+ (WebCore::AtomicHTMLToken::AtomicHTMLToken): Use assignment instead
+ of the set function since there are no raw pointers involved.
+ * loader/CachedResource.cpp:
+ (WebCore::CachedResource::makePurgeable): Ditto.
+
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCache::appendEntry): Use
+ leakPtr instead of release, and also add FIXME about deleting the
+ old value if the original and URL are already in the map. I
+ believe dealing with this FIXME may fix a storage leak.
+
+ * loader/CrossOriginPreflightResultCache.h: Change the argument
+ to be PassOwnPtr instead of a raw pointer, since this function
+ does take ownership.
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
+ Use assignment instead of the set function since there are no raw
+ pointers involved.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::startIconLoader): Ditto.
+ * loader/TextResourceDecoder.cpp:
+ (WebCore::TextResourceDecoder::decode): Ditto.
+ (WebCore::TextResourceDecoder::flush): Ditto.
+
+ * page/DOMTimer.cpp:
+ (WebCore::DOMTimer::fired): Use OwnPtr instead of an explicit
+ delete.
+
+ * platform/CrossThreadCopier.h: Removed explicit code that tried
+ to copy PassOwnPtr in a complicated way. It did nothing different
+ from just returning the PassOwnPtr. This presumably was done because
+ PassRefPtr has issues when copied cross-thread, but there are no
+ similar issues for PassOwnPtr. Someone with more experience than I
+ might be able to remove the specialization altogether, because
+ CrossThreadCopierPassThrough does the right thing in this case.
+
+ * platform/SharedBuffer.cpp:
+ (WebCore::SharedBuffer::adoptPurgeableBuffer): Changed argument to
+ be a PassOwnPtr.
+ (WebCore::SharedBuffer::releasePurgeableBuffer): Changed result to
+ be a PassOwnPtr.
+ * platform/SharedBuffer.h: Updated for changes above.
+
+ * rendering/RenderSVGResourceFilter.cpp:
+ (WebCore::RenderSVGResourceFilter::applyResource): Changed one site
+ to use assignment instead of the set function since there are no raw
+ pointers involved. Changed another site to use leakPtr instead
+ of release.
+
+ * rendering/RenderSVGResourceGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient): Use assignment
+ instead of the set function since there are no raw pointers involved.
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::setContent): Use leakPtr instead of release.
+ (WebCore::RenderStyle::setBoxShadow): Ditto.
+
+ * workers/DefaultSharedWorkerRepository.cpp:
+ (WebCore::DefaultSharedWorkerRepository::connectToWorker):
+ Removed unneeded call to release function in a code path that passes
+ a PassOwnPtr to a function that takes a PassOwnPtr.
+
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::setTimeout): Changed argument type to PassOwnPtr.
+ (WebCore::WorkerContext::setInterval): Ditto.
+ * workers/WorkerContext.h: Updated for changes above.
+
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
+ (WebCore::WorkerMessagingProxy::postMessageToWorkerContext):
+ Removed unneeded call to release function in code paths that pass
+ a PassOwnPtr to a function that takes a PassOwnPtr.
+
+2010-07-06 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ WebInspector: generator part of the patch for bug 40675.
+ On the way to Remote Debugging we want to support JSON serialization
+ on both sides of WebInspector transport.
+ As far as InspectorFrontend class is a simple proxy to WebInspector
+ it would be better to generate it from an IDL file.
+ We have generator infrastructure for binding and will reuse it for
+ new generator.
+ https://bugs.webkit.org/show_bug.cgi?id=41692
+
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.gyp/WebCore.gyp:
+ * WebCore.gyp/scripts/rule_binding.py:
+ * WebCore.gypi:
+ * WebCore.pri:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/scripts/CodeGenerator.pm:
+ * bindings/scripts/IDLParser.pm:
+ * bindings/scripts/generate-bindings.pl:
+ * inspector/CodeGeneratorInspector.pm: Added.
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::connectFrontend):
+ (WebCore::InspectorController::startTimelineProfiler):
+ * inspector/InspectorController.h:
+ * inspector/InspectorFrontend.cpp:
+ * inspector/InspectorFrontend.h:
+ * inspector/InspectorFrontend2.idl: Added.
+ * inspector/InspectorTimelineAgent.cpp:
+ (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
+ (WebCore::InspectorTimelineAgent::resetFrontendProxyObject):
+ (WebCore::InspectorTimelineAgent::addRecordToTimeline):
+ * inspector/InspectorTimelineAgent.h:
+
+2010-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ [GTK] Crashes when going back with page cache in unknown circunstances
+ https://bugs.webkit.org/show_bug.cgi?id=41710
+
+ Also NULL-check document, in hopes of fixing this hard to
+ reproduce crash that we are getting reported quite a bit.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::windowClipRect):
+
+2010-07-05 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: On the way to Remote Debuging we want to support JSON
+ serialization on both sides of WebInspector transport. As far as
+ InspectorFrontend class is a simple proxy to WebInspector it would
+ be better to generate it from an IDL file. We have generator
+ infostructure for binding and will reuse it for new generator.
+ https://bugs.webkit.org/show_bug.cgi?id=40675
+
+ * bindings/js/ScriptCallStack.cpp:
+ (WebCore::ScriptCallStack::stackTrace):
+ * bindings/js/ScriptCallStack.h:
+ * bindings/v8/ScriptCallStack.cpp:
+ (WebCore::ScriptCallStack::stackTrace):
+ * bindings/v8/ScriptCallStack.h:
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::addRecordToTimeline):
+ * inspector/InspectorFrontend.h:
+ * inspector/InspectorTimelineAgent.cpp:
+ (WebCore::InspectorTimelineAgent::pushGCEventRecords):
+ (WebCore::InspectorTimelineAgent::willCallFunction):
+ (WebCore::InspectorTimelineAgent::willDispatchEvent):
+ (WebCore::InspectorTimelineAgent::willLayout):
+ (WebCore::InspectorTimelineAgent::willRecalculateStyle):
+ (WebCore::InspectorTimelineAgent::willPaint):
+ (WebCore::InspectorTimelineAgent::willWriteHTML):
+ (WebCore::InspectorTimelineAgent::didWriteHTML):
+ (WebCore::InspectorTimelineAgent::didInstallTimer):
+ (WebCore::InspectorTimelineAgent::didRemoveTimer):
+ (WebCore::InspectorTimelineAgent::willFireTimer):
+ (WebCore::InspectorTimelineAgent::willChangeXHRReadyState):
+ (WebCore::InspectorTimelineAgent::willLoadXHR):
+ (WebCore::InspectorTimelineAgent::willEvaluateScript):
+ (WebCore::InspectorTimelineAgent::didScheduleResourceRequest):
+ (WebCore::InspectorTimelineAgent::willSendResourceRequest):
+ (WebCore::InspectorTimelineAgent::willReceiveResourceData):
+ (WebCore::InspectorTimelineAgent::willReceiveResourceResponse):
+ (WebCore::InspectorTimelineAgent::didFinishLoadingResource):
+ (WebCore::InspectorTimelineAgent::didMarkTimeline):
+ (WebCore::InspectorTimelineAgent::didMarkDOMContentEvent):
+ (WebCore::InspectorTimelineAgent::didMarkLoadEvent):
+ (WebCore::InspectorTimelineAgent::addRecordToTimeline):
+ (WebCore::InspectorTimelineAgent::setHeapSizeStatistic):
+ (WebCore::InspectorTimelineAgent::didCompleteCurrentRecord):
+ (WebCore::InspectorTimelineAgent::pushCurrentRecord):
+ * inspector/InspectorTimelineAgent.h:
+ (WebCore::InspectorTimelineAgent::TimelineRecordEntry::TimelineRecordEntry):
+ * inspector/TimelineRecordFactory.cpp:
+ (WebCore::TimelineRecordFactory::createGenericRecord):
+ (WebCore::TimelineRecordFactory::createGCEventData):
+ (WebCore::TimelineRecordFactory::createFunctionCallData):
+ (WebCore::TimelineRecordFactory::createEventDispatchData):
+ (WebCore::TimelineRecordFactory::createGenericTimerData):
+ (WebCore::TimelineRecordFactory::createTimerInstallData):
+ (WebCore::TimelineRecordFactory::createXHRReadyStateChangeData):
+ (WebCore::TimelineRecordFactory::createXHRLoadData):
+ (WebCore::TimelineRecordFactory::createEvaluateScriptData):
+ (WebCore::TimelineRecordFactory::createMarkTimelineData):
+ (WebCore::TimelineRecordFactory::createScheduleResourceRequestData):
+ (WebCore::TimelineRecordFactory::createResourceSendRequestData):
+ (WebCore::TimelineRecordFactory::createResourceReceiveResponseData):
+ (WebCore::TimelineRecordFactory::createResourceFinishData):
+ (WebCore::TimelineRecordFactory::createReceiveResourceData):
+ (WebCore::TimelineRecordFactory::createPaintData):
+ (WebCore::TimelineRecordFactory::createParseHTMLData):
+ * inspector/TimelineRecordFactory.h:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement InColgroupMode
+ https://bugs.webkit.org/show_bug.cgi?id=41663
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Implement bookmarking for HTML5 Adoption Agency algorithm
+ https://bugs.webkit.org/show_bug.cgi?id=41659
+
+ Was easier than I expected it to be.
+ Fixes a bunch of html5lib/runner.html tests.
+
+ * html/HTMLFormattingElementList.cpp:
+ (WebCore::HTMLFormattingElementList::bookmarkFor):
+ (WebCore::HTMLFormattingElementList::insertAt):
+ * html/HTMLFormattingElementList.h:
+ (WebCore::HTMLFormattingElementList::Bookmark::Bookmark):
+ (WebCore::HTMLFormattingElementList::Bookmark::moveToAfter):
+ (WebCore::HTMLFormattingElementList::Bookmark::elementBefore):
+ (WebCore::HTMLFormattingElementList::Bookmark::elementAfter):
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement more of InTableMode
+ https://bugs.webkit.org/show_bug.cgi?id=41652
+
+ By the time we got around to landing this patch, it turns out to be
+ just a bit of cleanup (the functional changes where landed already.)
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+
+2010-07-06 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r62529.
+ http://trac.webkit.org/changeset/62529
+ https://bugs.webkit.org/show_bug.cgi?id=41661
+
+ http/tests/inspector/resource-har-conversion.html is broken
+ (Requested by yutak on #webkit).
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addResource):
+ (WebCore::InspectorController::removeResource):
+ * inspector/InspectorController.h:
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::InspectorResource):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::cachedResource):
+ (WebCore::InspectorResource::type):
+ (WebCore::InspectorResource::resourceData):
+ * inspector/InspectorResource.h:
+ (WebCore::InspectorResource::):
+ (WebCore::InspectorResource::create):
+ * inspector/front-end/Resource.js:
+ (WebInspector.Resource.Type.toString):
+ (WebInspector.Resource.prototype.set type):
+ (WebInspector.Resource.prototype._mimeTypeIsConsistentWithType):
+ * inspector/front-end/ResourceView.js:
+ (WebInspector.ResourceView.prototype._refreshRequestHeaders):
+ (WebInspector.ResourceView.prototype._refreshResponseHeaders):
+ (WebInspector.ResourceView.prototype._refreshHeaders):
+ * inspector/front-end/inspector.css:
+ (.resources-category-scripts, .resources-category-xhr, .resources-category-fonts, .resources-category-other):
+ * inspector/front-end/inspector.js:
+ (WebInspector.loaded):
+ (WebInspector.updateResource):
+ * websockets/WebSocketChannel.cpp:
+ (WebCore::WebSocketChannel::WebSocketChannel):
+ (WebCore::WebSocketChannel::disconnect):
+ (WebCore::WebSocketChannel::didOpen):
+ (WebCore::WebSocketChannel::didClose):
+ (WebCore::WebSocketChannel::processBuffer):
+ * websockets/WebSocketChannel.h:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement InCaptionMode
+ https://bugs.webkit.org/show_bug.cgi?id=41660
+
+ Implementing this mode also turned up a subtle bug in the adoption
+ agency code.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::indexOfFirstUnopenFormattingElement):
+ - We're supposed to reutrn the first *unopened* formatting element.
+ The old code returned the first *opened* formatting element.
+ * html/HTMLTreeBuilder.h:
+
+2010-07-06 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement defaut cases for InTableMode
+ https://bugs.webkit.org/show_bug.cgi?id=41656
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ SVGRenderContainer forces too many kids to relayout
+ https://bugs.webkit.org/show_bug.cgi?id=15391
+
+ Fixing a long-standing performance issue. We should only ever need to relayout container children when the parent bounds change.
+ The bounds of a container can only change, if the outermost RenderSVGRoot container uses relative length values and its size changes.
+ This can either happen when the window resizes for standalone SVG documents, or if an enclosing RenderBox changes width/height values.
+
+ Only relayout container children if the container has selfNeedsLayout() true, or if the parent bounds change.
+ Lively Kernel doesn't do any relayouts anymore, except if you change the Safari window size, this is a great progression.
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::layout): No need to special case Path updates, if the element uses relative lengths. SVGRenderSupport now handles this case.
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout): Fix some style issues.
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::setDrawsContents): Inlined for speed.
+ (WebCore::RenderSVGContainer::drawsContents): Ditto.
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::RenderSVGRoot): Initialize m_isLayoutSizeChanged to false.
+ (WebCore::RenderSVGRoot::layout): Set m_isLayoutSizeChanged=true when the RenderSVGRoot size changes during layout.
+ (WebCore::RenderSVGRoot::calcViewport): Remove hasRelativeLengths() special case.
+ * rendering/RenderSVGRoot.h:
+ (WebCore::RenderSVGRoot::isLayoutSizeChanged): New function, which returns true during layout() if the outermost <svg> size changes.
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::calcViewport): Cleanup code, and remove obsolete hasRelativeLengths() special case.
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::svgRootTreeObject): Added helper function, that returns the RenderSVGRoot for a given RenderObject.
+ (WebCore::SVGRenderSupport::layoutChildren): Remove FIXME, only relayout container children, if the parent bounds change and the child uses relative lengths.
+ * svg/SVGStyledElement.cpp:
+ (WebCore::SVGStyledElement::updateRelativeLengthsInformation): Implemented this function. Keeps track of relative lengths elements, so that the
+ hasRelativeLengths() information is always up2date.
+ * svg/SVGStyledElement.h:
+ (WebCore::SVGStyledElement::hasRelativeLengths): Don't call the virtual selfHasRelativeLengths() information, just return wheter m_elementsWithRelativeLengths is not empty.
+
+2010-07-05 Yuzo Fujishima <yuzo@google.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for Bug 41509 - Ranges for @font-face unicode-range must be separated by commas
+ https://bugs.webkit.org/show_bug.cgi?id=41509
+
+ Test: fast/css/font-face-multiple-ranges-for-unicode-range.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseFontFaceUnicodeRange):
+
+2010-07-05 Yuta Kitamura <yutak@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Add WebSocket resource type to Web Inspector.
+
+ When a new WebSocket connection is established, a line for that connection
+ will appear in Web Inspector's Resources tab. If the resource name is
+ clicked, the details of handshake request and response will be shown.
+
+ Web Inspector: WebSocket in Resources tab
+ https://bugs.webkit.org/show_bug.cgi?id=40768
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addResource): WebSocket resource does not
+ have an associated loader, thus frame might be null. Need to check it.
+ (WebCore::InspectorController::removeResource): Ditto.
+ (WebCore::InspectorController::didCreateWebSocket):
+ (WebCore::InspectorController::willSendWebSocketHandshakeRequest):
+ (WebCore::InspectorController::didReceiveWebSocketHandshakeResponse):
+ (WebCore::InspectorController::didCloseWebSocket):
+ * inspector/InspectorController.h:
+ * inspector/InspectorResource.cpp: Add null checks of m_loader and m_frame,
+ because WebSocket does not have a loader and we need to allow null for
+ these variables.
+ (WebCore::createReadableStringFromBinary):
+ (WebCore::InspectorResource::InspectorResource):
+ (WebCore::InspectorResource::create): Factory function of
+ regular (non-WebSocket) resources.
+ (WebCore::InspectorResource::createWebSocket): Factory function of
+ WebSocket resources.
+ (WebCore::InspectorResource::updateWebSocketRequest):
+ (WebCore::InspectorResource::updateWebSocketResponse):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::cachedResource):
+ (WebCore::InspectorResource::type):
+ (WebCore::InspectorResource::resourceData):
+ * inspector/InspectorResource.h:
+ (WebCore::InspectorResource::):
+ (WebCore::InspectorResource::markWebSocket):
+ * inspector/front-end/Resource.js:
+ (WebInspector.Resource.Type.toString):
+ (WebInspector.Resource.prototype.set type):
+ (WebInspector.Resource.prototype._mimeTypeIsConsistentWithType):
+ * inspector/front-end/ResourceView.js:
+ (WebInspector.ResourceView.prototype._refreshRequestHeaders):
+ (WebInspector.ResourceView.prototype._refreshResponseHeaders):
+ (WebInspector.ResourceView.prototype._refreshHeaders):
+ * inspector/front-end/inspector.css:
+ (.resources-category-websockets, .resources-category-other):
+ (.resources-category-websockets .resources-graph-bar):
+ (.resources-category-websockets.resource-cached .resources-graph-bar):
+ * inspector/front-end/inspector.js:
+ (WebInspector.loaded):
+ (WebInspector.updateResource):
+ * websockets/WebSocketChannel.cpp:
+ (WebCore::WebSocketChannel::WebSocketChannel):
+ (WebCore::WebSocketChannel::disconnect):
+ (WebCore::WebSocketChannel::didOpen):
+ (WebCore::WebSocketChannel::didClose):
+ (WebCore::WebSocketChannel::processBuffer):
+ (WebCore::WebSocketChannel::identifier):
+ * websockets/WebSocketChannel.h:
+
+2010-07-05 Yury Semikhatsky <yurys@chromium.org>
+
+ Unreviewed. Fix Chromium build.
+
+ * inspector/InspectorApplicationCacheAgent.cpp:
+ (WebCore::InspectorApplicationCacheAgent::fillResourceList):
+ (WebCore::InspectorApplicationCacheAgent::getApplicationCaches):
+
+2010-07-05 Adam Barth <abarth@webkit.org>
+
+ Unreviewed.
+
+ Move processStartTagForInBody to its own function.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ * html/HTMLTreeBuilder.cpp.orig: Added.
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Fix one more notImplemented in h1-h6 start tag handling
+ https://bugs.webkit.org/show_bug.cgi?id=41654
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Unreviewed. Just fixing proess to process.
+ Clearly Adam and I can't spell. Thankfully MikeSmith can.
+
+ Add <isindex> support, per HTML5
+ https://bugs.webkit.org/show_bug.cgi?id=41650
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processFakeStartTag):
+ (WebCore::HTMLTreeBuilder::processFakeEndTag):
+ (WebCore::HTMLTreeBuilder::processIsindexStartTagForBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add <isindex> support, per HTML5
+ https://bugs.webkit.org/show_bug.cgi?id=41650
+
+ Covered by html5lib/runner.html including a new
+ isindex.dat test suite.
+
+ * html/HTMLToken.h:
+ (WebCore::AtomicHTMLToken::AtomicHTMLToken):
+ - Support passing attributes to the constructor.
+ (WebCore::AtomicHTMLToken::name):
+ (WebCore::AtomicHTMLToken::setName):
+ (WebCore::AtomicHTMLToken::getAttributeItem):
+ (WebCore::AtomicHTMLToken::attributes):
+ (WebCore::AtomicHTMLToken::takeAtributes):
+ - Reduces ref-churn, and makes it possible for callers
+ to modify attributes w/o affecting future uses of the attributes.
+ (WebCore::AtomicHTMLToken::usesName):
+ - Used by ASSERTS.
+ (WebCore::AtomicHTMLToken::usesAttributes):
+ - Used by ASSERTS.
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::convertToOldStyle):
+ - Can't be const, now that we use takeAttributes()
+ (WebCore::HTMLTreeBuilder::insertHTMLStartTagBeforeHTML):
+ (WebCore::HTMLTreeBuilder::proesssFakeStartTag):
+ - New function. I'm not sure this is the perfect design
+ (I'd kinda like AtomicHTMLToken to be copyable so we can
+ have create functions for it), but this makes the callsites
+ using fake tokens much more readable.
+ (WebCore::HTMLTreeBuilder::proesssFakeEndTag):
+ (WebCore::HTMLTreeBuilder::processFakeCharacters):
+ (WebCore::HTMLTreeBuilder::attributesForIsindexInput):
+ (WebCore::HTMLTreeBuilder::processIsindexStartTagForBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::insertScriptElement):
+ - Use takeAttributes() for less ref-churn.
+ (WebCore::HTMLTreeBuilder::createElement): ditto
+ (WebCore::HTMLTreeBuilder::finished):
+ - Remove bogus use of AtomicHTMLToken constructor which
+ wasn't even being used now that we support emitting EOF tokens
+ from the Tokenizer directly.
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ ASSERT that we're processing the correct type of token
+ https://bugs.webkit.org/show_bug.cgi?id=41647
+
+ Making these asserts work required a small (non-observable) tweak to
+ some old code.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processDoctypeToken):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processBodyEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processComment):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+ (WebCore::HTMLTreeBuilder::processStartTagForInHead):
+
+2010-07-05 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement in select in table
+ https://bugs.webkit.org/show_bug.cgi?id=41646
+
+ This mode is mostly a fall-through to the InSelectMode.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+
+2010-07-05 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement basic text node coalescing
+ https://bugs.webkit.org/show_bug.cgi?id=41623
+
+ This patch isn't the end-all, be-all of text node coalescing, but it's
+ a good start.
+
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::parserAppendData):
+ (WebCore::CharacterData::appendData):
+ * dom/CharacterData.h:
+ - Added a new method to dance around mutation events.
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::insertTextNode):
+
+2010-07-05 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Implement InSelectMode
+ https://bugs.webkit.org/show_bug.cgi?id=41627
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ (WebCore::HTMLTreeBuilder::processCharacter):
+ (WebCore::HTMLTreeBuilder::processEndOfFile):
+
+2010-07-05 Fady Samuel <fsamuel@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Fixed a svg crash when setting class of an svg ellipse object.
+
+ Altering the CSS class of an attached SVG element causes WebKit to crash
+ https://bugs.webkit.org/show_bug.cgi?id=40857
+
+ Test: svg/css/svg-ellipse-render-crash.html
+
+ * dom/StyledElement.cpp:
+ (WebCore::StyledElement::classAttributeChanged):
+
+2010-07-05 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Reproducible crash with Optimize Legibility extension
+ https://bugs.webkit.org/show_bug.cgi?id=41585
+
+ Test: fast/css/text-rendering-priority.html
+
+ Moved the text-rendering CSS property to the “high priority” group, because applying it
+ during style selection invalidates the font.
+
+ * css/CSSPropertyNames.in: Moved text-rendering to the “high priority” section at the top.
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyDeclarations): Updated compile-time assertion.
+
+2010-07-05 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ optimizeLegibility doesn't play nice with fonts that do not have a space glyph
+ https://bugs.webkit.org/show_bug.cgi?id=41599
+
+ No test because none of the fonts available to DumpRenderTree are missing a space glyph.
+
+ * rendering/RenderBlockLineLayout.cpp:
+ (WebCore::RenderBlock::findNextLineBreak): When the font does not map the space character
+ to a glyph, a fallback font is used for space. Therefore, wordTrailingSpaceWidth must be
+ initialized with the width of a space as measured by the Font rather than with the cached
+ space width.
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Implement HTML5's "reset insertion mode appropriately"
+ https://bugs.webkit.org/show_bug.cgi?id=41628
+
+ This has some minimal testing. One from my previous
+ </table> patch, and a few from the main suite.
+
+ Mostly resetInsertionModeAppropriately isn't used yet
+ but we're about to add a bunch of states which do use it
+ and our test coverage will expand further as we do.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
+ (WebCore::HTMLTreeBuilder::setInsertionModeAndEnd):
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-04 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add </table> support for "in table" insertion mode
+ https://bugs.webkit.org/show_bug.cgi?id=41591
+
+ resetInsertionModeAppropriately isn't implemented yet, however
+ I've added a test for the usage I added.
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Joseph Pecoraro <joepeck@webkit.org>
+
+ Unreviewed build fix for r62503.
+
+ Chromium missing method. Filed bug 41632 to track.
+
+ * loader/appcache/ApplicationCacheHost.h:
+ (WebCore::ApplicationCacheHost::applicationCache):
+
+2010-07-05 Joseph Pecoraro <joepeck@webkit.org>
+
+ Unreviewed build fix for r62503.
+
+ Missed GTK's build file.
+
+ * GNUmakefile.am:
+
+2010-07-05 Joseph Pecoraro <joepeck@webkit.org>
+
+ Unreviewed build fix for r62503.
+
+ Pass a blank ResourceResponse instead of passing 0.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::createResourceHandle):
+
+2010-07-05 Joseph Pecoraro <joepeck@webkit.org>
+
+ Unreviewed build fix for r62503.
+
+ Forward declare ApplicationCache for Chromium.
+
+ * loader/appcache/ApplicationCacheHost.h:
+
+2010-07-05 Joseph Pecoraro <joepeck@webkit.org>
+
+ Reviewed by Pavel Feldman.
+
+ WebInspector: HTML5 Offline Web Applications Support (ApplicationCache)
+ https://bugs.webkit.org/show_bug.cgi?id=24529
+
+ Parts of this patch were written by Kavita Kanetkar <kkanetkar@chromium.org>.
+
+ Part 2: Pulling ApplicationCache Resources to Display in the Inspector.
+
+ The InspectorApplicationCacheAgent gathers the information it
+ needs and forwards it on to the inspector.
+
+ * inspector/InspectorApplicationCacheAgent.cpp:
+ (WebCore::InspectorApplicationCacheAgent::fillResourceList): get information about the resources.
+ (WebCore::InspectorApplicationCacheAgent::getApplicationCaches): gathers all the information from the ApplicationCacheHost.
+ (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache):
+ (WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
+ (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource):
+ * inspector/InspectorApplicationCacheAgent.h: defines structures to hold information about caches and resources.
+ (WebCore::InspectorApplicationCacheAgent::ApplicationCacheInfo::ApplicationCacheInfo):
+ (WebCore::InspectorApplicationCacheAgent::ResourceInfo::ResourceInfo):
+ (WebCore::InspectorApplicationCacheAgent::~InspectorApplicationCacheAgent):
+ * loader/appcache/ApplicationCacheHost.h:
+ (WebCore::ApplicationCacheHost::applicationCacheForInspector): new convention, public cache accessor for the inspector.
+ (WebCore::ApplicationCacheHost::documentLoader): added const.
+
+ The User Interface uses a DataGrid, like Cookies.
+
+ * inspector/front-end/ApplicationCacheItemsView.js:
+ (WebInspector.ApplicationCacheItemsView.prototype._update):
+ (WebInspector.ApplicationCacheItemsView.prototype._updateCallback):
+ (WebInspector.ApplicationCacheItemsView.prototype._createDataGrid):
+ (WebInspector.ApplicationCacheItemsView.prototype._populateDataGrid.numberCompare):
+ (WebInspector.ApplicationCacheItemsView.prototype._populateDataGrid.localeCompare):
+ (WebInspector.ApplicationCacheItemsView.prototype._populateDataGrid):
+
+ The usual frontend pull workflow, except this goes through
+ InspectorApplicationCacheAgent instead of InspectorController.
+
+ * inspector/InspectorBackend.cpp:
+ (WebCore::InspectorBackend::getApplicationCaches):
+ (WebCore::InspectorBackend::inspectorApplicationCacheAgent):
+ * inspector/InspectorBackend.h:
+ * inspector/InspectorBackend.idl:
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::didGetApplicationCaches):
+ * inspector/InspectorFrontend.h:
+ * inspector/front-end/DOMAgent.js:
+ (WebInspector.DOMNode.prototype.hasChildNodes): style fix.
+ (WebInspector.DOMAgent.prototype.nodeForId): style fix.
+ (WebInspector.ApplicationCache.getApplicationCachesAsync): pull.
+ (WebInspector.Cookies.getCookiesAsync):
+ * inspector/front-end/StoragePanel.js:
+ (WebInspector.StoragePanel.prototype.updateManifest):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.onselect):
+ * inspector/front-end/inspector.js:
+ (WebInspector.updateResource):
+ (WebInspector._addAppCacheDomain):
+ (WebInspector.reset):
+
+ Miscellaneous. Localized Strings and fixes.
+
+ * English.lproj/localizedStrings.js: "Type", "%s (%s)"
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::deleteCookie):
+ * inspector/InspectorController.h:
+
+2010-07-04 Joseph Pecoraro <joepeck@webkit.org>
+
+ Reviewed by Pavel Feldman.
+
+ WebInspector: HTML5 Offline Web Applications Support (ApplicationCache)
+ https://bugs.webkit.org/show_bug.cgi?id=24529
+
+ Part 1: Backend -> Frontend Messages. ApplicationCache Status and Connectivity Status.
+
+ This patch adds an InspectorApplicationCacheAgent to monitor application
+ cache changes, starts a UI in the Storage panel, handles the boilerplate
+ of adding new files.
+
+ Added an agent to encapsulate and handle the application cache logic.
+ This is similar to the timeline agent.
+
+ * inspector/InspectorApplicationCacheAgent.cpp: Added.
+ (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
+ (WebCore::InspectorApplicationCacheAgent::~InspectorApplicationCacheAgent):
+ (WebCore::InspectorApplicationCacheAgent::didReceiveManifestResponse):
+ (WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
+ (WebCore::InspectorApplicationCacheAgent::updateNetworkState):
+ * inspector/InspectorApplicationCacheAgent.h: Added.
+
+ InspectorController owns an InspectorApplicationCacheAgent. This
+ handles its lifetime management.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::~InspectorController):
+ (WebCore::InspectorController::connectFrontend): create the agent with a frontend.
+ (WebCore::InspectorController::disconnectFrontend): remove the agent when closing.
+ (WebCore::InspectorController::releaseFrontendLifetimeAgents):
+ * inspector/InspectorController.h:
+
+ User Interface for ApplicationCache in the StoragePanel. This follows
+ very closely to Cookies, it will have a sortable table of items. The
+ status bar contains connectivity and application cache status
+ indicators which update when backend messages are received. There
+ are some stubs which the next part will implement.
+
+ * inspector/front-end/ApplicationCacheItemsView.js: Added.
+ (WebInspector.ApplicationCacheItemsView):
+ (WebInspector.ApplicationCacheItemsView.prototype.get statusBarItems): refresh, delete, connectivity, application cache status.
+ (WebInspector.ApplicationCacheItemsView.prototype.show):
+ (WebInspector.ApplicationCacheItemsView.prototype.hide):
+ (WebInspector.ApplicationCacheItemsView.prototype.updateStatus): this is the application cache status indicator.
+ (WebInspector.ApplicationCacheItemsView.prototype.updateNetworkState): this is the online/offline connectivity indicator.
+ (WebInspector.ApplicationCacheItemsView.prototype._update):
+ (WebInspector.ApplicationCacheItemsView.prototype._updateCallback):
+ (WebInspector.ApplicationCacheItemsView.prototype._createDataGrid):
+ (WebInspector.ApplicationCacheItemsView.prototype._populateDataGrid):
+ (WebInspector.ApplicationCacheItemsView.prototype.resize):
+ (WebInspector.ApplicationCacheItemsView.prototype._deleteButtonClicked):
+ (WebInspector.ApplicationCacheItemsView.prototype._deleteCallback):
+ (WebInspector.ApplicationCacheItemsView.prototype._refreshButtonClicked):
+
+ The usual dispatch flow from the backend, to the frontend, to the
+ panel, and then to the visible view. Some slight refactoring to
+ eliminate duplicated code.
+
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::updateDOMStorage):
+ (WebCore::InspectorFrontend::didGetApplicationCaches):
+ (WebCore::InspectorFrontend::updateApplicationCacheStatus):
+ * inspector/InspectorFrontend.h:
+ * inspector/front-end/StoragePanel.js:
+ (WebInspector.StoragePanel):
+ (WebInspector.StoragePanel.prototype.reset):
+ (WebInspector.StoragePanel.prototype.addApplicationCache):
+ (WebInspector.StoragePanel.prototype.showDatabase):
+ (WebInspector.StoragePanel.prototype.showDOMStorage):
+ (WebInspector.StoragePanel.prototype.showCookies):
+ (WebInspector.StoragePanel.prototype.showApplicationCache):
+ (WebInspector.StoragePanel.prototype._genericViewSetup):
+ (WebInspector.StoragePanel.prototype.updateApplicationCacheStatus):
+ (WebInspector.StoragePanel.prototype.updateNetworkState):
+ (WebInspector.CookieSidebarTreeElement.prototype.set subtitle):
+ (WebInspector.ApplicationCacheSidebarTreeElement):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.onselect):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.get mainTitle):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.set mainTitle):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.get subtitle):
+ (WebInspector.ApplicationCacheSidebarTreeElement.prototype.set subtitle):
+ * inspector/front-end/inspector.js:
+ (WebInspector.dispatch.delayDispatch):
+ (WebInspector.dispatch):
+ (WebInspector._addAppCacheDomain):
+ (WebInspector.addDOMStorage):
+ (WebInspector.updateDOMStorage):
+
+ Notify the InspectorApplicationCacheAgent on application cache changes
+ or specifics. Notify the InspectorController on generic resource events.
+ That is because ApplicationCacheController is a ResourceClient and needs
+ to trigger the resource events normally handled by ResourceLoader.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::inspectorUpdateApplicationCacheStatus): helper method to prevent duplicated code.
+ (WebCore::ApplicationCacheGroup::setNewestCache): status change.
+ (WebCore::ApplicationCacheGroup::makeObsolete): status change.
+ (WebCore::ApplicationCacheGroup::update): status change.
+ (WebCore::ApplicationCacheGroup::createResourceHandle): resource event.
+ (WebCore::ApplicationCacheGroup::willSendRequest): resource event.
+ (WebCore::ApplicationCacheGroup::didReceiveResponse): resource event.
+ (WebCore::ApplicationCacheGroup::didReceiveData): resource event.
+ (WebCore::ApplicationCacheGroup::didFinishLoading): resource event.
+ (WebCore::ApplicationCacheGroup::didFail): resource event.
+ (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): resource event.
+ (WebCore::ApplicationCacheGroup::manifestNotFound): status change.
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): status change.
+ (WebCore::ApplicationCacheGroup::setUpdateStatus): single access point for status changes.
+ * loader/appcache/ApplicationCacheGroup.h:
+ * page/Page.cpp:
+ (WebCore::networkStateChanged): connectivity status change.
+
+ Final inspector details to add the new file, style new elements,
+ images, and localized strings.
+
+ * inspector/front-end/inspector.css:
+ (.application-cache-sidebar-tree-item .icon):
+ (.timeline-records-counter, .storage-application-cache-status, .storage-application-cache-connectivity):
+ (.storage-application-cache-status-icon, .storage-application-cache-connectivity-icon):
+ (.status-bar-divider):
+ (.storage-application-cache-status, .storage-application-cache-connectivity):
+ * inspector/front-end/inspector.html:
+ * inspector/front-end/Images/applicationCache.png: Added.
+ * English.lproj/localizedStrings.js: "APPLICATION CACHE", "No Application Cache information available.", "Online", "Offline"
+
+ Updated build files.
+
+ * CMakeLists.txt:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * inspector/front-end/WebKit.qrc:
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add basic <col> support to the treebuilder
+ https://bugs.webkit.org/show_bug.cgi?id=41590
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add basic "in row" mode to support <td> and <th> insertion
+ https://bugs.webkit.org/show_bug.cgi?id=41588
+
+ Also fixed <td> or <th> as a direct child of <table>.
+
+ Most of this was covered by html5lib/runner.html tests,
+ but I had to add a new tables01.dat to cover the <th> cases.
+
+ * html/HTMLElementStack.cpp:
+ (WebCore::HTMLNames::isTableRowScopeMarker):
+ (WebCore::HTMLElementStack::popUntilTableRowScopeMarker):
+ * html/HTMLElementStack.h:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTag):
+
+2010-07-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Finish implementing "any other end tag" for "in body" mode
+ https://bugs.webkit.org/show_bug.cgi?id=41582
+
+ I believe I found a "bug" in the HTML5 spec when writing this:
+ http://www.w3.org/Bugs/Public/show_bug.cgi?id=10080
+
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processEndTag):
+ * html/HTMLTreeBuilder.h:
+
+2010-07-05 Martin Robinson <mrobinson@igalia.com>
+
+ Unreviewed.
+
+ Add a missing slash to the list of generated sources. This
+ was missing from a previous build fix.
+
+ * GNUmakefile.am:
+
2010-07-05 Pavel Feldman <pfeldman@chromium.org>
Reviewed by Joseph Pecoraro.
diff --git a/WebCore/Configurations/FeatureDefines.xcconfig b/WebCore/Configurations/FeatureDefines.xcconfig
index 8f86fc3..9a3ec0b 100644
--- a/WebCore/Configurations/FeatureDefines.xcconfig
+++ b/WebCore/Configurations/FeatureDefines.xcconfig
@@ -31,6 +31,8 @@
// Set any ENABLE_FEATURE_NAME macro to an empty string to disable that feature.
+ENABLE_LINK_PREFETCH = ;
+
ENABLE_3D_CANVAS = $(ENABLE_3D_CANVAS_$(TARGET_MAC_OS_X_VERSION_MAJOR));
ENABLE_3D_CANVAS_1050 = ENABLE_3D_CANVAS;
ENABLE_3D_CANVAS_1060 = ENABLE_3D_CANVAS;
@@ -84,5 +86,4 @@ ENABLE_XHTMLMP = ;
ENABLE_XPATH = ENABLE_XPATH;
ENABLE_XSLT = ENABLE_XSLT;
-FEATURE_DEFINES = $(ENABLE_3D_CANVAS) $(ENABLE_3D_RENDERING) $(ENABLE_BLOB_SLICE) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DATALIST) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILTERS) $(ENABLE_FILE_READER) $(ENABLE_FILE_WRITER) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_RESIZER) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_MATHML) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PROGRESS_TAG) $(ENABLE_RUBY) $(ENABLE_SANDBOX) $(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_WEB_TIMING) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
-
+FEATURE_DEFINES = $(ENABLE_LINK_PREFETCH) $(ENABLE_3D_CANVAS) $(ENABLE_3D_RENDERING) $(ENABLE_BLOB_SLICE) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DATALIST) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILTERS) $(ENABLE_FILE_READER) $(ENABLE_FILE_WRITER) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_RESIZER) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_MATHML) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PROGRESS_TAG) $(ENABLE_RUBY) $(ENABLE_SANDBOX) $(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_WEB_TIMING) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
diff --git a/WebCore/DerivedSources.cpp b/WebCore/DerivedSources.cpp
index 5f2fe58..78c523f 100644
--- a/WebCore/DerivedSources.cpp
+++ b/WebCore/DerivedSources.cpp
@@ -79,7 +79,11 @@
#include "JSDOMCoreException.cpp"
#include "JSDOMFormData.cpp"
#include "JSDOMImplementation.cpp"
+#include "JSDOMMimeType.cpp"
+#include "JSDOMMimeTypeArray.cpp"
#include "JSDOMParser.cpp"
+#include "JSDOMPlugin.cpp"
+#include "JSDOMPluginArray.cpp"
#include "JSDOMSelection.cpp"
#include "JSDOMStringList.cpp"
#include "JSDOMStringMap.cpp"
@@ -178,6 +182,7 @@
#include "JSIDBErrorEvent.cpp"
#include "JSIDBEvent.cpp"
#include "JSIDBIndexRequest.cpp"
+#include "JSIDBKey.cpp"
#include "JSIDBKeyRange.cpp"
#include "JSIDBObjectStoreRequest.cpp"
#include "JSIDBRequest.cpp"
@@ -196,8 +201,6 @@
#include "JSMessageChannel.cpp"
#include "JSMessageEvent.cpp"
#include "JSMessagePort.cpp"
-#include "JSMimeType.cpp"
-#include "JSMimeTypeArray.cpp"
#include "JSMouseEvent.cpp"
#include "JSMutationEvent.cpp"
#include "JSNamedNodeMap.cpp"
@@ -213,8 +216,6 @@
#include "JSOverflowEvent.cpp"
#include "JSPageTransitionEvent.cpp"
#include "JSPerformance.cpp"
-#include "JSPlugin.cpp"
-#include "JSPluginArray.cpp"
#include "JSPopStateEvent.cpp"
#include "JSPositionError.cpp"
#include "JSProcessingInstruction.cpp"
diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
index 5e80f2e..8430024 100644
--- a/WebCore/DerivedSources.make
+++ b/WebCore/DerivedSources.make
@@ -113,7 +113,11 @@ DOM_CLASSES = \
DOMCoreException \
DOMFormData \
DOMImplementation \
+ DOMMimeType \
+ DOMMimeTypeArray \
DOMParser \
+ DOMPlugin \
+ DOMPluginArray \
DOMSelection \
DOMStringList \
DOMStringMap \
@@ -221,6 +225,7 @@ DOM_CLASSES = \
IDBErrorEvent \
IDBEvent \
IDBIndexRequest \
+ IDBKey \
IDBKeyRange \
IDBObjectStoreRequest \
IDBRequest \
@@ -238,8 +243,6 @@ DOM_CLASSES = \
MessageChannel \
MessageEvent \
MessagePort \
- MimeType \
- MimeTypeArray \
MouseEvent \
MutationEvent \
NamedNodeMap \
@@ -255,8 +258,6 @@ DOM_CLASSES = \
OverflowEvent \
PageTransitionEvent \
Performance \
- Plugin \
- PluginArray \
PopStateEvent \
PositionError \
ProcessingInstruction \
@@ -470,11 +471,15 @@ DOM_CLASSES = \
XSLTProcessor \
#
+INSPECTOR_CLASSES = InspectorFrontend2
+
.PHONY : all
-JS_DOM_HEADERS=$(filter-out JSEventListener.h JSEventTarget.h,$(DOM_CLASSES:%=JS%.h))
+JS_DOM_HEADERS=$(filter-out JSEventListener.h JSEventTarget.h,$(DOM_CLASSES:%=JS%.h) $(INSPECTOR_CLASSES:%=Remote%.h))
all : \
+ remove-stray-plugin-and-mime-type-files \
+ \
$(JS_DOM_HEADERS) \
\
JSJavaScriptCallFrame.h \
@@ -540,6 +545,12 @@ endif
# --------
+# Temporary build rule. Take out once some time has passed.
+
+.PHONY : remove-stray-plugin-and-mime-type-files
+remove-stray-plugin-and-mime-type-files :
+ (rm DOMMimeTypeArray.h DOMMimeTypeArray.mm DOMMimeTypeArrayInternal.h DOMPluginArray.h DOMPluginArray.mm DOMPluginArrayInternal.h 2> /dev/null) || echo -n
+
# CSS property names and value keywords
WEBCORE_CSS_PROPERTY_NAMES := $(WebCore)/css/CSSPropertyNames.in
@@ -703,12 +714,6 @@ XMLNames.cpp : dom/make_names.pl xml/xmlattrs.in
# SVG tag and attribute names, and element factory
-ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
-
-ifeq ($(findstring ENABLE_SVG_DOM_OBJC_BINDINGS,$(FEATURE_DEFINES)), ENABLE_SVG_DOM_OBJC_BINDINGS)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.exp
-endif
-
ifeq ($(findstring ENABLE_SVG_USE,$(FEATURE_DEFINES)), ENABLE_SVG_USE)
SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_USE=1
endif
@@ -719,9 +724,6 @@ endif
ifeq ($(findstring ENABLE_FILTERS,$(FEATURE_DEFINES)), ENABLE_FILTERS)
SVG_FLAGS := $(SVG_FLAGS) ENABLE_FILTERS=1
-ifeq ($(findstring ENABLE_SVG_DOM_OBJC_BINDINGS,$(FEATURE_DEFINES)), ENABLE_SVG_DOM_OBJC_BINDINGS)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.Filters.exp
-endif
endif
ifeq ($(findstring ENABLE_SVG_AS_IMAGE,$(FEATURE_DEFINES)), ENABLE_SVG_AS_IMAGE)
@@ -730,16 +732,10 @@ endif
ifeq ($(findstring ENABLE_SVG_ANIMATION,$(FEATURE_DEFINES)), ENABLE_SVG_ANIMATION)
SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_ANIMATION=1
-ifeq ($(findstring ENABLE_SVG_DOM_OBJC_BINDINGS,$(FEATURE_DEFINES)), ENABLE_SVG_DOM_OBJC_BINDINGS)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.Animation.exp
-endif
endif
ifeq ($(findstring ENABLE_SVG_FOREIGN_OBJECT,$(FEATURE_DEFINES)), ENABLE_SVG_FOREIGN_OBJECT)
SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FOREIGN_OBJECT=1
-ifeq ($(findstring ENABLE_SVG_DOM_OBJC_BINDINGS,$(FEATURE_DEFINES)), ENABLE_SVG_DOM_OBJC_BINDINGS)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.ForeignObject.exp
-endif
endif
# SVG tag and attribute names (need to pass an extra flag if svg experimental features are enabled)
@@ -760,24 +756,6 @@ JSSVGElementWrapperFactory.cpp : SVGNames.cpp
XLinkNames.cpp : dom/make_names.pl svg/xlinkattrs.in
perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in
-else
-
-SVGElementFactory.cpp :
- echo > $@
-
-SVGNames.cpp :
- echo > $@
-
-XLinkNames.cpp :
- echo > $@
-
-# This file is autogenerated by make_names.pl when SVG is enabled.
-
-JSSVGElementWrapperFactory.cpp :
- echo > $@
-
-endif
-
# --------
# WML tag and attribute names, and element factory
@@ -801,39 +779,37 @@ endif
# MathML tag and attribute names, and element factory
-ifeq ($(findstring ENABLE_MATHML,$(FEATURE_DEFINES)), ENABLE_MATHML)
-
MathMLElementFactory.cpp MathMLNames.cpp : dom/make_names.pl mathml/mathtags.in mathml/mathattrs.in
perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/mathml/mathtags.in --attrs $(WebCore)/mathml/mathattrs.in --factory --wrapperFactory
-else
+# --------
-MathMLElementFactory.cpp :
- echo > $@
+# Common generator things
-MathMLNames.cpp :
- echo > $@
+GENERATE_SCRIPTS = \
+ bindings/scripts/CodeGenerator.pm \
+ bindings/scripts/IDLParser.pm \
+ bindings/scripts/IDLStructure.pm \
+ bindings/scripts/generate-bindings.pl
-endif
+generator_script = perl $(addprefix -I $(WebCore)/, $(sort $(dir $(1)))) $(WebCore)/bindings/scripts/generate-bindings.pl
+# JS bindings generator
+IDL_INCLUDES = dom html css page notifications xml svg
+IDL_COMMON_ARGS = $(IDL_INCLUDES:%=--include %) --write-dependencies --outputDir .
-# --------
+JS_BINDINGS_SCRIPTS = $(GENERATE_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
-# JavaScript bindings
+JS%.h : %.idl $(JS_BINDINGS_SCRIPTS)
+ $(call generator_script, $(JS_BINDINGS_SCRIPTS)) $(IDL_COMMON_ARGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS $<
-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 --write-dependencies --outputDir .
+# Inspector interfaces generator
-GENERATE_BINDINGS_SCRIPTS = \
- bindings/scripts/CodeGenerator.pm \
- bindings/scripts/IDLParser.pm \
- bindings/scripts/IDLStructure.pm \
- bindings/scripts/generate-bindings.pl \
-#
+INSPECTOR_GENERATOR_SCRIPTS = $(GENERATE_SCRIPTS) inspector/CodeGeneratorInspector.pm
-JS%.h : %.idl $(GENERATE_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
- $(GENERATE_BINDINGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS $<
+Remote%.h : %.idl $(INSPECTOR_GENERATOR_SCRIPTS)
+ $(call generator_script, $(INSPECTOR_GENERATOR_SCRIPTS)) --outputDir . --defines "LANGUAGE_JAVASCRIPT" --generator Inspector $<
-include $(JS_DOM_HEADERS:.h=.dep)
@@ -843,11 +819,11 @@ JS%.h : %.idl $(GENERATE_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
ifeq ($(OS),MACOS)
-OBJC_DOM_HEADERS=$(filter-out DOMDOMWindow.h DOMMimeType.h DOMPlugin.h,$(DOM_CLASSES:%=DOM%.h))
+OBJC_DOM_HEADERS=$(filter-out DOMDOMWindow.h DOMDOMMimeType.h DOMDOMPlugin.h,$(DOM_CLASSES:%=DOM%.h))
all : $(OBJC_DOM_HEADERS)
-all : CharsetData.cpp WebCore.exp WebCore.LP64.exp
+all : CharsetData.cpp
# --------
@@ -858,88 +834,26 @@ CharsetData.cpp : platform/text/mac/make-charset-table.pl platform/text/mac/char
# --------
-# export file
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_JAVA_BRIDGE | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.JNI.exp
-endif
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_NETSCAPE_PLUGIN_API | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.NPAPI.exp
-endif
-
-# FIXME: WTF_USE_PLUGIN_HOST_PROCESS is only true when building for x86_64, but we shouldn't have to know about that here.
-ifeq ($(findstring x86_64,$(ARCHS)) $(findstring x86_64,$(VALID_ARCHS)), x86_64 x86_64)
-ifeq ($(shell gcc -arch x86_64 -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep WTF_USE_PLUGIN_HOST_PROCESS | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.PluginHostProcess.exp
-endif
-endif
+ifneq ($(ACTION),installhdrs)
-ifeq ($(findstring ENABLE_3D_RENDERING,$(FEATURE_DEFINES)), ENABLE_3D_RENDERING)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.3DRendering.exp
-endif
+all : WebCore.exp WebCore.LP64.exp
-ifeq ($(shell gcc -arch x86_64 -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep WTF_USE_ACCELERATED_COMPOSITING | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.AcceleratedCompositing.exp
-endif
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_CONTEXT_MENUS | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.ContextMenus.exp
-endif
-
-ifeq ($(ENABLE_DASHBOARD_SUPPORT), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.DashboardSupport.exp
-endif
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_DRAG_SUPPORT | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.DragSupport.exp
-endif
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_INSPECTOR | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.Inspector.exp
-endif
+WebCore.exp : $(BUILT_PRODUCTS_DIR)/WebCoreExportFileGenerator
+ $^ > $@
-ifeq ($(ENABLE_ORIENTATION_EVENTS), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.OrientationEvents.exp
-endif
-
-ifeq ($(findstring 10.4,$(MACOSX_DEPLOYMENT_TARGET)), 10.4)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.Tiger.exp
-endif
-
-ifeq ($(findstring ENABLE_PLUGIN_PROXY_FOR_VIDEO,$(FEATURE_DEFINES)), ENABLE_PLUGIN_PROXY_FOR_VIDEO)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.VideoProxy.exp
-endif
-
-ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.Video.exp
-endif
-
-ifeq ($(findstring ENABLE_GEOLOCATION,$(FEATURE_DEFINES)), ENABLE_GEOLOCATION)
-ifeq ($(findstring ENABLE_CLIENT_BASED_GEOLOCATION,$(FEATURE_DEFINES)), ENABLE_CLIENT_BASED_GEOLOCATION)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.ClientBasedGeolocation.exp
-else
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.Geolocation.exp
-endif
-endif
-
-ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK | cut -d' ' -f3), 1)
- WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.ProtectionSpaceAuthCallback.exp
-endif
-
-WebCore.exp : WebCore.base.exp $(WEBCORE_EXPORT_DEPENDENCIES)
- cat $^ > $@
-
-# Switch NSRect, NSSize and NSPoint with their CG counterparts for 64-bit.
+# Switch NSRect, NSSize and NSPoint with their CG counterparts for the 64-bit exports file.
WebCore.LP64.exp : WebCore.exp
cat $^ | sed -e s/7_NSRect/6CGRect/ -e s/7_NSSize/6CGSize/ -e s/8_NSPoint/7CGPoint/ > $@
+endif # installhdrs
+
# --------
# Objective-C bindings
-DOM%.h : %.idl $(GENERATE_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorObjC.pm bindings/objc/PublicDOMInterfaces.h
- $(GENERATE_BINDINGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC $<
+DOM_BINDINGS_SCRIPTS = $(GENERATE_BINDING_SCRIPTS) bindings/scripts/CodeGeneratorObjC.pm
+DOM%.h : %.idl $(DOM_BINDINGS_SCRIPTS) bindings/objc/PublicDOMInterfaces.h
+ $(call generator_script, $(DOM_BINDINGS_SCRIPTS)) $(IDL_COMMON_ARGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC $<
-include $(OBJC_DOM_HEADERS:.h=.dep)
diff --git a/WebCore/English.lproj/localizedStrings.js b/WebCore/English.lproj/localizedStrings.js
index 7ffafdf..e624b16 100644
--- a/WebCore/English.lproj/localizedStrings.js
+++ b/WebCore/English.lproj/localizedStrings.js
Binary files differ
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index bf197fc..278aa9b 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -99,11 +99,13 @@ webcore_built_sources += \
DerivedSources/WebCore/HTMLNames.cpp \
DerivedSources/WebCore/HTMLNames.h \
DerivedSources/WebCore/JSHTMLElementWrapperFactory.cpp \
+ DerivedSources/WebCore/RemoteInspectorFrontend2.cpp \
+ DerivedSources/WebCore/RemoteInspectorFrontend2.h \
DerivedSources/WebCore/UserAgentStyleSheets.h \
DerivedSources/WebCore/UserAgentStyleSheetsData.cpp \
DerivedSources/WebCore/XMLNSNames.cpp \
DerivedSources/WebCore/XMLNSNames.h \
- DerivedSources/WebCore/XMLNames.cpp
+ DerivedSources/WebCore/XMLNames.cpp \
DerivedSources/WebCore/XMLNames.h
IDL_BINDINGS += \
@@ -314,10 +316,10 @@ IDL_BINDINGS += \
WebCore/page/Timing.idl \
WebCore/page/WebKitPoint.idl \
WebCore/page/WorkerNavigator.idl \
- WebCore/plugins/MimeType.idl \
- WebCore/plugins/MimeTypeArray.idl \
- WebCore/plugins/Plugin.idl \
- WebCore/plugins/PluginArray.idl \
+ WebCore/plugins/DOMMimeType.idl \
+ WebCore/plugins/DOMMimeTypeArray.idl \
+ WebCore/plugins/DOMPlugin.idl \
+ WebCore/plugins/DOMPluginArray.idl \
WebCore/workers/AbstractWorker.idl \
WebCore/workers/DedicatedWorkerContext.idl \
WebCore/workers/SharedWorker.idl \
@@ -333,6 +335,12 @@ IDL_BINDINGS += \
WebCore/xml/XMLSerializer.idl \
WebCore/xml/XSLTProcessor.idl
+# This IDL file should not be used when calculating the source list
+# of libWebCoreJS, so we add it directly to the header list here, so
+# that it will be included in the distribution.
+noinst_HEADERS += \
+ WebCore/inspector/InspectorFrontend2.idl
+
webcoregtk_dom_sources = \
WebCore/bindings/gobject/ConvertToUTF8String.cpp \
WebCore/bindings/gobject/ConvertToUTF8String.h \
@@ -493,7 +501,7 @@ webcore_sources += \
WebCore/bindings/js/JSMessageEventCustom.cpp \
WebCore/bindings/js/JSMessagePortCustom.cpp \
WebCore/bindings/js/JSMessagePortCustom.h \
- WebCore/bindings/js/JSMimeTypeArrayCustom.cpp \
+ WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp \
WebCore/bindings/js/JSNamedNodeMapCustom.cpp \
WebCore/bindings/js/JSNavigatorCustom.cpp \
WebCore/bindings/js/JSNodeCustom.cpp \
@@ -505,8 +513,8 @@ webcore_sources += \
WebCore/bindings/js/JSNodeListCustom.cpp \
WebCore/bindings/js/JSOptionConstructor.cpp \
WebCore/bindings/js/JSOptionConstructor.h \
- WebCore/bindings/js/JSPluginArrayCustom.cpp \
- WebCore/bindings/js/JSPluginCustom.cpp \
+ WebCore/bindings/js/JSDOMPluginArrayCustom.cpp \
+ WebCore/bindings/js/JSDOMPluginCustom.cpp \
WebCore/bindings/js/JSPluginElementFunctions.cpp \
WebCore/bindings/js/JSPluginElementFunctions.h \
WebCore/bindings/js/JSPopStateEventCustom.cpp \
@@ -565,6 +573,7 @@ webcore_sources += \
WebCore/bindings/js/StringSourceProvider.h \
WebCore/bindings/js/WebCoreJSClientData.h \
WebCore/bindings/ScriptControllerBase.cpp \
+ WebCore/bindings/ScriptControllerBase.h \
WebCore/bridge/Bridge.h \
WebCore/bridge/IdentifierRep.cpp \
WebCore/bridge/IdentifierRep.h \
@@ -753,8 +762,6 @@ webcore_sources += \
WebCore/dom/CDATASection.h \
WebCore/dom/CSSMappedAttributeDeclaration.cpp \
WebCore/dom/CSSMappedAttributeDeclaration.h \
- WebCore/dom/CanvasSurface.cpp \
- WebCore/dom/CanvasSurface.h \
WebCore/dom/CharacterData.cpp \
WebCore/dom/CharacterData.h \
WebCore/dom/CheckedRadioButtons.cpp \
@@ -793,9 +800,9 @@ webcore_sources += \
WebCore/dom/DatasetDOMStringMap.h \
WebCore/dom/DecodedDataDocumentParser.cpp \
WebCore/dom/DecodedDataDocumentParser.h \
- WebCore/dom/DeviceOrientation.cpp \
- WebCore/dom/DeviceOrientation.h \
WebCore/dom/DeviceOrientationClient.h \
+ WebCore/dom/DeviceOrientationController.cpp \
+ WebCore/dom/DeviceOrientationController.h \
WebCore/dom/DeviceOrientationEvent.cpp \
WebCore/dom/DeviceOrientationEvent.h \
WebCore/dom/Document.cpp \
@@ -1049,8 +1056,12 @@ webcore_sources += \
WebCore/editing/visible_units.cpp \
WebCore/editing/visible_units.h \
WebCore/editing/gtk/SelectionControllerGtk.cpp \
- WebCore/history/BackForwardList.cpp \
+ WebCore/history/BackForwardController.cpp \
+ WebCore/history/BackForwardController.h \
+ WebCore/history/BackForwardControllerClient.h \
WebCore/history/BackForwardList.h \
+ WebCore/history/BackForwardListImpl.cpp \
+ WebCore/history/BackForwardListImpl.h \
WebCore/history/CachedFrame.cpp \
WebCore/history/CachedFrame.h \
WebCore/history/CachedFramePlatformData.h \
@@ -1168,6 +1179,8 @@ webcore_sources += \
WebCore/html/HTMLDivElement.h \
WebCore/html/HTMLDocument.cpp \
WebCore/html/HTMLDocument.h \
+ WebCore/html/HTMLConstructionSite.cpp \
+ WebCore/html/HTMLConstructionSite.h \
WebCore/html/HTMLElement.cpp \
WebCore/html/HTMLElement.h \
WebCore/html/HTMLElementStack.cpp \
@@ -1348,6 +1361,8 @@ webcore_sources += \
WebCore/inspector/InjectedScript.h \
WebCore/inspector/InjectedScriptHost.cpp \
WebCore/inspector/InjectedScriptHost.h \
+ WebCore/inspector/InspectorApplicationCacheAgent.cpp \
+ WebCore/inspector/InspectorApplicationCacheAgent.h \
WebCore/inspector/InspectorBackend.cpp \
WebCore/inspector/InspectorBackend.h \
WebCore/inspector/InspectorCSSStore.cpp \
@@ -1590,6 +1605,7 @@ webcore_sources += \
WebCore/page/Timing.h \
WebCore/page/UserContentURLPattern.cpp \
WebCore/page/UserContentURLPattern.h \
+ WebCore/page/UserContentTypes.h \
WebCore/page/UserScript.h \
WebCore/page/UserScriptTypes.h \
WebCore/page/UserStyleSheet.h \
@@ -1892,14 +1908,14 @@ webcore_sources += \
WebCore/platform/text/UnicodeRange.h \
WebCore/platform/text/transcoder/FontTranscoder.cpp \
WebCore/platform/text/transcoder/FontTranscoder.h \
- WebCore/plugins/MimeType.cpp \
- WebCore/plugins/MimeType.h \
- WebCore/plugins/MimeTypeArray.cpp \
- WebCore/plugins/MimeTypeArray.h \
- WebCore/plugins/Plugin.cpp \
- WebCore/plugins/Plugin.h \
- WebCore/plugins/PluginArray.cpp \
- WebCore/plugins/PluginArray.h \
+ WebCore/plugins/DOMMimeType.cpp \
+ WebCore/plugins/DOMMimeType.h \
+ WebCore/plugins/DOMMimeTypeArray.cpp \
+ WebCore/plugins/DOMMimeTypeArray.h \
+ WebCore/plugins/DOMPlugin.cpp \
+ WebCore/plugins/DOMPlugin.h \
+ WebCore/plugins/DOMPluginArray.cpp \
+ WebCore/plugins/DOMPluginArray.h \
WebCore/plugins/PluginData.cpp \
WebCore/plugins/PluginData.h \
WebCore/plugins/PluginDatabase.cpp \
@@ -2493,6 +2509,7 @@ webcore_sources += \
WebCore/storage/DatabaseTracker.cpp \
WebCore/storage/DatabaseTracker.h \
WebCore/storage/DatabaseTrackerClient.h \
+ WebCore/storage/IDBKey.h \
WebCore/storage/OriginQuotaManager.cpp \
WebCore/storage/OriginQuotaManager.h \
WebCore/storage/OriginUsageRecord.cpp \
@@ -3126,6 +3143,8 @@ webcore_sources += \
WebCore/mathml/RenderMathMLUnderOver.cpp \
WebCore/mathml/RenderMathMLUnderOver.h
+endif # END ENABLE_MATHML
+
webcore_built_sources += \
DerivedSources/WebCore/MathMLElementFactory.cpp \
DerivedSources/WebCore/MathMLElementFactory.h \
@@ -3139,14 +3158,7 @@ DerivedSources/WebCore/MathMLNames.h: DerivedSources/WebCore/MathMLNames.cpp
DerivedSources/WebCore/MathMLElementFactory.cpp DerivedSources/WebCore/MathMLNames.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/mathml/mathtags.in $(WebCore)/mathml/mathattrs.in
$(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --tags $(WebCore)/mathml/mathtags.in --attrs $(WebCore)/mathml/mathattrs.in --factory --wrapperFactory --outputDir "$(GENSOURCES_WEBCORE)"
-else
-DerivedSources/WebCore/MathMLElementFactory.cpp:
- echo > $@
-
-DerivedSources/WebCore/MathMLNames.cpp:
- echo > $@
-endif # END ENABLE_MATHML
# ----
# Notifications support
@@ -3178,12 +3190,6 @@ FEATURE_DEFINES += ENABLE_SVG=1
WEBCORE_CSS_PROPERTY_NAMES += $(WebCore)/css/SVGCSSPropertyNames.in
WEBCORE_CSS_VALUE_KEYWORDS += $(WebCore)/css/SVGCSSValueKeywords.in
-webcore_built_sources += \
- DerivedSources/WebCore/JSSVGElementWrapperFactory.cpp \
- DerivedSources/WebCore/SVGElementFactory.cpp \
- DerivedSources/WebCore/SVGNames.cpp \
- DerivedSources/WebCore/XLinkNames.cpp
-
IDL_BINDINGS += \
WebCore/svg/ElementTimeControl.idl \
WebCore/svg/SVGAElement.idl \
@@ -3790,6 +3796,14 @@ SVG_FEATURES += ENABLE_SVG_ANIMATION=1
webcore_cppflags += -DENABLE_SVG_ANIMATION=1
endif
+endif # END ENABLE_SVG
+
+webcore_built_sources += \
+ DerivedSources/WebCore/JSSVGElementWrapperFactory.cpp \
+ DerivedSources/WebCore/SVGElementFactory.cpp \
+ DerivedSources/WebCore/SVGNames.cpp \
+ DerivedSources/WebCore/XLinkNames.cpp
+
# SVG tag and attribute names (need to pass an extra flag if svg experimental features are enabled)
DerivedSources/WebCore/SVGNames.cpp: DerivedSources/WebCore/SVGElementFactory.cpp;
DerivedSources/WebCore/JSSVGElementWrapperFactory.cpp: DerivedSources/WebCore/SVGElementFactory.cpp
@@ -3810,8 +3824,6 @@ DerivedSources/WebCore/XLinkNames.h: DerivedSources/WebCore/XLinkNames.cpp;
DerivedSources/WebCore/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_WEBCORE)"
-endif # END ENABLE_SVG
-
# ----
# Web Sockets Support
# ----
@@ -3970,6 +3982,10 @@ DerivedSources/WebCore/XMLNSNames.cpp DerivedSources/WebCore/XMLNSNames.h: $(Web
DerivedSources/WebCore/XMLNames.cpp DerivedSources/WebCore/XMLNames.h: $(WebCore)/dom/make_names.pl $(WebCore)/xml/xmlattrs.in
$(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in --outputDir "$(GENSOURCES_WEBCORE)"
+# Remote Inspector frontend
+DerivedSources/WebCore/RemoteInspectorFrontend2.cpp DerivedSources/WebCore/RemoteInspectorFrontend2.h: $(WebCore)/inspector/InspectorFrontend2.idl $(SCRIPTS_BINDINGS) $(WebCore)/inspector/CodeGeneratorInspector.pm
+ $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts -I$(WebCore)/inspector $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_PATH:%=--include "%") --outputDir "$(GENSOURCES_WEBCORE)" --defines "LANGUAGE_JAVASCRIPT=1 $(FEATURE_DEFINES)" --generator Inspector $<
+
IDL_PATH := \
$(WebCore)/bindings/js \
$(WebCore)/css \
@@ -4041,7 +4057,7 @@ libWebCoreJS.la: $(libWebCoreJS_objects)
DerivedSources/webkit/webkitdomdummy.c:
- mkdir -p DerivedSources/webkit || echo > $@
+ $(AM_V_GEN)mkdir -p DerivedSources/webkit || echo > $@
# Because WebCore/bindings/gobject/WebKitDOMObject.h is static source but is also a distributed header
# required by other distributed headers (both static and auto-generated), need to move this to the
@@ -4163,10 +4179,10 @@ IDL_BINDINGS_GDOM += \
WebCore/page/Navigator.idl \
WebCore/page/Screen.idl \
WebCore/page/WebKitPoint.idl \
- WebCore/plugins/MimeType.idl \
- WebCore/plugins/MimeTypeArray.idl \
- WebCore/plugins/Plugin.idl \
- WebCore/plugins/PluginArray.idl \
+ WebCore/plugins/DOMMimeType.idl \
+ WebCore/plugins/DOMMimeTypeArray.idl \
+ WebCore/plugins/DOMPlugin.idl \
+ WebCore/plugins/DOMPluginArray.idl \
WebCore/storage/Database.idl \
WebCore/storage/Storage.idl \
WebCore/xml/XPathExpression.idl \
@@ -4268,6 +4284,8 @@ webcore_dist += \
WebCore/css/SVGCSSValueKeywords.in \
WebCore/css/makegrammar.pl \
WebCore/dom/make_names.pl \
+ WebCore/inspector/CodeGeneratorInspector.pm \
+ WebCore/mathml/mathattrs.in \
WebCore/mathml/mathtags.in \
WebCore/platform/text/mac/make-charset-table.pl \
WebCore/platform/ColorData.gperf \
diff --git a/WebCore/WebCore.3DRendering.exp b/WebCore/WebCore.3DRendering.exp
deleted file mode 100644
index 4a84c63..0000000
--- a/WebCore/WebCore.3DRendering.exp
+++ /dev/null
@@ -1 +0,0 @@
-_WebCoreHas3DRendering
diff --git a/WebCore/WebCore.AcceleratedCompositing.exp b/WebCore/WebCore.AcceleratedCompositing.exp
deleted file mode 100644
index 40abc69..0000000
--- a/WebCore/WebCore.AcceleratedCompositing.exp
+++ /dev/null
@@ -1,2 +0,0 @@
-__ZN7WebCore13GraphicsLayer17removeAllChildrenEv
-__ZN7WebCore13GraphicsLayer6createEPNS_19GraphicsLayerClientE
diff --git a/WebCore/WebCore.ClientBasedGeolocation.exp b/WebCore/WebCore.ClientBasedGeolocation.exp
deleted file mode 100644
index c624acb..0000000
--- a/WebCore/WebCore.ClientBasedGeolocation.exp
+++ /dev/null
@@ -1,2 +0,0 @@
-__ZN7WebCore21GeolocationController13errorOccurredEPNS_16GeolocationErrorE
-__ZN7WebCore21GeolocationController15positionChangedEPNS_19GeolocationPositionE
diff --git a/WebCore/WebCore.ContextMenus.exp b/WebCore/WebCore.ContextMenus.exp
deleted file mode 100644
index 62b2c1f..0000000
--- a/WebCore/WebCore.ContextMenus.exp
+++ /dev/null
@@ -1,5 +0,0 @@
-__ZN7WebCore11ContextMenu22setPlatformDescriptionEP14NSMutableArray
-__ZN7WebCore12EventHandler20sendContextMenuEventEP7NSEvent
-__ZN7WebCore15ContextMenuItem26releasePlatformDescriptionEv
-__ZN7WebCore21ContextMenuController16clearContextMenuEv
-__ZNK7WebCore11ContextMenu19platformDescriptionEv
diff --git a/WebCore/WebCore.DashboardSupport.exp b/WebCore/WebCore.DashboardSupport.exp
deleted file mode 100644
index 70fed73..0000000
--- a/WebCore/WebCore.DashboardSupport.exp
+++ /dev/null
@@ -1,3 +0,0 @@
-.objc_class_name_WebDashboardRegion
-__ZN7WebCore5Frame26dashboardRegionsDictionaryEv
-__ZN7WebCore8Settings41setUsesDashboardBackwardCompatibilityModeEb
diff --git a/WebCore/WebCore.DragSupport.exp b/WebCore/WebCore.DragSupport.exp
deleted file mode 100644
index 30786ba..0000000
--- a/WebCore/WebCore.DragSupport.exp
+++ /dev/null
@@ -1,9 +0,0 @@
-__ZN7WebCore12EventHandler17dragSourceEndedAtERKNS_18PlatformMouseEventENS_13DragOperationE
-__ZN7WebCore12EventHandler17eventMayStartDragEP7NSEvent
-__ZN7WebCore14DragController10dragExitedEPNS_8DragDataE
-__ZN7WebCore14DragController11dragEnteredEPNS_8DragDataE
-__ZN7WebCore14DragController11dragUpdatedEPNS_8DragDataE
-__ZN7WebCore14DragController11performDragEPNS_8DragDataE
-__ZN7WebCore14DragController14placeDragCaretERKNS_8IntPointE
-__ZN7WebCore14DragController9dragEndedEv
-__ZN7WebCore8DragDataC1EP11objc_objectRKNS_8IntPointES5_NS_13DragOperationEPNS_16PasteboardHelperE
diff --git a/WebCore/WebCore.Geolocation.exp b/WebCore/WebCore.Geolocation.exp
deleted file mode 100644
index 296c8aa..0000000
--- a/WebCore/WebCore.Geolocation.exp
+++ /dev/null
@@ -1,2 +0,0 @@
-__ZN7WebCore22GeolocationServiceMock11setPositionEN3WTF10PassRefPtrINS_11GeopositionEEE
-__ZN7WebCore22GeolocationServiceMock8setErrorEN3WTF10PassRefPtrINS_13PositionErrorEEE
diff --git a/WebCore/WebCore.Inspector.exp b/WebCore/WebCore.Inspector.exp
deleted file mode 100644
index 5bf6f05..0000000
--- a/WebCore/WebCore.Inspector.exp
+++ /dev/null
@@ -1,30 +0,0 @@
-__ZN7WebCore19InspectorController10setSettingERKNS_6StringES3_
-__ZN7WebCore19InspectorController14enableDebuggerEv
-__ZN7WebCore19InspectorController14enableProfilerEbb
-__ZN7WebCore19InspectorController15disableDebuggerEb
-__ZN7WebCore19InspectorController15disableProfilerEb
-__ZN7WebCore19InspectorController18disconnectFrontendEv
-__ZN7WebCore19InspectorController20stopTimelineProfilerEv
-__ZN7WebCore19InspectorController21startTimelineProfilerEv
-__ZN7WebCore19InspectorController25evaluateForTestInFrontendElRKNS_6StringE
-__ZN7WebCore19InspectorController26setInspectorFrontendClientEN3WTF10PassOwnPtrINS_23InspectorFrontendClientEEE
-__ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv
-__ZN7WebCore19InspectorController27startUserInitiatedProfilingEPNS_5TimerIS0_EE
-__ZN7WebCore19InspectorController4showEv
-__ZN7WebCore19InspectorController5closeEv
-__ZN7WebCore19InspectorController7inspectEPNS_4NodeE
-__ZN7WebCore19InspectorController9showPanelENS0_13SpecialPanelsE
-__ZN7WebCore28InspectorFrontendClientLocal12moveWindowByEff
-__ZN7WebCore28InspectorFrontendClientLocal14frontendLoadedEv
-__ZN7WebCore28InspectorFrontendClientLocal15canAttachWindowEv
-__ZN7WebCore28InspectorFrontendClientLocal17setAttachedWindowEb
-__ZN7WebCore28InspectorFrontendClientLocal19requestAttachWindowEv
-__ZN7WebCore28InspectorFrontendClientLocal19requestDetachWindowEv
-__ZN7WebCore28InspectorFrontendClientLocal19windowObjectClearedEv
-__ZN7WebCore28InspectorFrontendClientLocal26changeAttachedWindowHeightEj
-__ZN7WebCore28InspectorFrontendClientLocal27restoreAttachedWindowHeightEv
-__ZN7WebCore28InspectorFrontendClientLocalC2EPNS_19InspectorControllerEPNS_4PageE
-__ZN7WebCore28InspectorFrontendClientLocalD2Ev
-__ZNK7WebCore19InspectorController17drawNodeHighlightERNS_15GraphicsContextE
-__ZNK7WebCore19InspectorController7enabledEv
-__ZNK7WebCore19InspectorController7settingERKNS_6StringE
diff --git a/WebCore/WebCore.JNI.exp b/WebCore/WebCore.JNI.exp
deleted file mode 100644
index d57b8c7..0000000
--- a/WebCore/WebCore.JNI.exp
+++ /dev/null
@@ -1,10 +0,0 @@
-_KJS_JSCreateNativeJSObject
-_KJS_JSObject_JSFinalize
-_KJS_JSObject_JSObjectCall
-_KJS_JSObject_JSObjectEval
-_KJS_JSObject_JSObjectGetMember
-_KJS_JSObject_JSObjectGetSlot
-_KJS_JSObject_JSObjectRemoveMember
-_KJS_JSObject_JSObjectSetMember
-_KJS_JSObject_JSObjectSetSlot
-_KJS_JSObject_JSObjectToString
diff --git a/WebCore/WebCore.NPAPI.exp b/WebCore/WebCore.NPAPI.exp
deleted file mode 100644
index 781332e..0000000
--- a/WebCore/WebCore.NPAPI.exp
+++ /dev/null
@@ -1,28 +0,0 @@
-__NPN_Construct
-__NPN_CreateObject
-__NPN_Enumerate
-__NPN_Evaluate
-__NPN_GetIntIdentifier
-__NPN_GetProperty
-__NPN_GetStringIdentifier
-__NPN_GetStringIdentifiers
-__NPN_HasMethod
-__NPN_HasProperty
-__NPN_IdentifierIsString
-__NPN_IntFromIdentifier
-__NPN_Invoke
-__NPN_InvokeDefault
-__NPN_ReleaseObject
-__NPN_ReleaseVariantValue
-__NPN_RemoveProperty
-__NPN_RetainObject
-__NPN_SetException
-__NPN_SetProperty
-__NPN_UTF8FromIdentifier
-__ZN7WebCore16ScriptController20windowScriptNPObjectEv
-__ZN7WebCore16ScriptController29cleanupScriptObjectsForPluginEPv
-__ZNK7WebCore12RenderObject4viewEv
-__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_
-__ZNK7WebCore4KURL7hasPathEv
-__ZNK7WebCore4KURL9prettyURLEv
-__ZNK7WebCore9FrameView22windowClipRectForLayerEPKNS_11RenderLayerEb
diff --git a/WebCore/WebCore.OrientationEvents.exp b/WebCore/WebCore.OrientationEvents.exp
deleted file mode 100644
index ec0978d..0000000
--- a/WebCore/WebCore.OrientationEvents.exp
+++ /dev/null
@@ -1 +0,0 @@
-__ZN7WebCore5Frame26sendOrientationChangeEventEi
diff --git a/WebCore/WebCore.PluginHostProcess.exp b/WebCore/WebCore.PluginHostProcess.exp
deleted file mode 100644
index e9d4734..0000000
--- a/WebCore/WebCore.PluginHostProcess.exp
+++ /dev/null
@@ -1,28 +0,0 @@
-# This file gets appended to WebCore.exp when USE(PLUGIN_HOST_PROCESS) is 1.
-__ZN3JSC13RuntimeMethod11getCallDataERNS_8CallDataE
-__ZN3JSC13RuntimeMethod18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3JSC13RuntimeMethod24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE
-__ZN3JSC13RuntimeMethod6s_infoE
-__ZN3JSC13RuntimeMethodC2EPNS_9ExecStateEPNS_14JSGlobalObjectERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
-__ZN3JSC8Bindings10RootObjectD1Ev
-__ZN3JSC8Bindings13RuntimeObject11getCallDataERNS_8CallDataE
-__ZN3JSC8Bindings13RuntimeObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3JSC8Bindings13RuntimeObject16getConstructDataERNS_13ConstructDataE
-__ZN3JSC8Bindings13RuntimeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3JSC8Bindings13RuntimeObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
-__ZN3JSC8Bindings13RuntimeObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE
-__ZN3JSC8Bindings13RuntimeObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
-__ZN3JSC8Bindings13RuntimeObject6s_infoE
-__ZN3JSC8Bindings13RuntimeObjectC2EPNS_9ExecStateEPNS_14JSGlobalObjectEN3WTF10PassRefPtrINS0_8InstanceEEE
-__ZN3JSC8Bindings13RuntimeObjectD2Ev
-__ZN3JSC8Bindings8Instance19createRuntimeObjectEPNS_9ExecStateE
-__ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3JSC8Bindings8InstanceD2Ev
-__ZN7WebCore13IdentifierRep3getEPKc
-__ZN7WebCore13IdentifierRep3getEi
-__ZN7WebCore13IdentifierRep7isValidEPS0_
-__ZN7WebCore16ScriptController16createRootObjectEPv
-__ZN7WebCore16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
-__ZN7WebCore16ScriptController24jsObjectForPluginElementEPNS_17HTMLPlugInElementE
-__ZNK3JSC8Bindings13RuntimeObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
-__ZTVN3JSC13RuntimeMethodE
diff --git a/WebCore/WebCore.ProtectionSpaceAuthCallback.exp b/WebCore/WebCore.ProtectionSpaceAuthCallback.exp
deleted file mode 100644
index 4c27ed9..0000000
--- a/WebCore/WebCore.ProtectionSpaceAuthCallback.exp
+++ /dev/null
@@ -1,2 +0,0 @@
-__ZN7WebCore3macERKNS_15ProtectionSpaceE
-__ZNK7WebCore15ProtectionSpace20authenticationSchemeEv
diff --git a/WebCore/WebCore.SVG.Animation.exp b/WebCore/WebCore.SVG.Animation.exp
deleted file mode 100644
index e90aec7..0000000
--- a/WebCore/WebCore.SVG.Animation.exp
+++ /dev/null
@@ -1,2 +0,0 @@
-.objc_class_name_DOMSVGAnimateElement
-.objc_class_name_DOMSVGAnimateTransformElement
diff --git a/WebCore/WebCore.SVG.Filters.exp b/WebCore/WebCore.SVG.Filters.exp
deleted file mode 100644
index 5698258..0000000
--- a/WebCore/WebCore.SVG.Filters.exp
+++ /dev/null
@@ -1,25 +0,0 @@
-.objc_class_name_DOMSVGComponentTransferFunctionElement
-.objc_class_name_DOMSVGFEBlendElement
-.objc_class_name_DOMSVGFEColorMatrixElement
-.objc_class_name_DOMSVGFEComponentTransferElement
-.objc_class_name_DOMSVGFECompositeElement
-.objc_class_name_DOMSVGFEDiffuseLightingElement
-.objc_class_name_DOMSVGFEDisplacementMapElement
-.objc_class_name_DOMSVGFEDistantLightElement
-.objc_class_name_DOMSVGFEFloodElement
-.objc_class_name_DOMSVGFEFuncAElement
-.objc_class_name_DOMSVGFEFuncBElement
-.objc_class_name_DOMSVGFEFuncGElement
-.objc_class_name_DOMSVGFEFuncRElement
-.objc_class_name_DOMSVGFEGaussianBlurElement
-.objc_class_name_DOMSVGFEImageElement
-.objc_class_name_DOMSVGFEMergeElement
-.objc_class_name_DOMSVGFEMergeNodeElement
-.objc_class_name_DOMSVGFEMorphologyElement
-.objc_class_name_DOMSVGFEOffsetElement
-.objc_class_name_DOMSVGFEPointLightElement
-.objc_class_name_DOMSVGFESpecularLightingElement
-.objc_class_name_DOMSVGFESpotLightElement
-.objc_class_name_DOMSVGFETileElement
-.objc_class_name_DOMSVGFETurbulenceElement
-.objc_class_name_DOMSVGFilterElement
diff --git a/WebCore/WebCore.SVG.ForeignObject.exp b/WebCore/WebCore.SVG.ForeignObject.exp
deleted file mode 100644
index 255f600..0000000
--- a/WebCore/WebCore.SVG.ForeignObject.exp
+++ /dev/null
@@ -1 +0,0 @@
-.objc_class_name_DOMSVGForeignObjectElement
diff --git a/WebCore/WebCore.SVG.exp b/WebCore/WebCore.SVG.exp
deleted file mode 100644
index 1e56700..0000000
--- a/WebCore/WebCore.SVG.exp
+++ /dev/null
@@ -1,95 +0,0 @@
-.objc_class_name_DOMSVGAElement
-.objc_class_name_DOMSVGAltGlyphElement
-.objc_class_name_DOMSVGAngle
-.objc_class_name_DOMSVGAnimateColorElement
-.objc_class_name_DOMSVGAnimatedAngle
-.objc_class_name_DOMSVGAnimatedBoolean
-.objc_class_name_DOMSVGAnimatedEnumeration
-.objc_class_name_DOMSVGAnimatedInteger
-.objc_class_name_DOMSVGAnimatedLength
-.objc_class_name_DOMSVGAnimatedLengthList
-.objc_class_name_DOMSVGAnimatedNumber
-.objc_class_name_DOMSVGAnimatedNumberList
-.objc_class_name_DOMSVGAnimatedPreserveAspectRatio
-.objc_class_name_DOMSVGAnimatedRect
-.objc_class_name_DOMSVGAnimatedString
-.objc_class_name_DOMSVGAnimatedTransformList
-.objc_class_name_DOMSVGAnimationElement
-.objc_class_name_DOMSVGCircleElement
-.objc_class_name_DOMSVGClipPathElement
-.objc_class_name_DOMSVGColor
-.objc_class_name_DOMSVGCursorElement
-.objc_class_name_DOMSVGDefsElement
-.objc_class_name_DOMSVGDescElement
-.objc_class_name_DOMSVGDocument
-.objc_class_name_DOMSVGElement
-.objc_class_name_DOMSVGElementInstance
-.objc_class_name_DOMSVGElementInstanceList
-.objc_class_name_DOMSVGEllipseElement
-.objc_class_name_DOMSVGGElement
-.objc_class_name_DOMSVGGradientElement
-.objc_class_name_DOMSVGImageElement
-.objc_class_name_DOMSVGLength
-.objc_class_name_DOMSVGLengthList
-.objc_class_name_DOMSVGLineElement
-.objc_class_name_DOMSVGLinearGradientElement
-.objc_class_name_DOMSVGMarkerElement
-.objc_class_name_DOMSVGMaskElement
-.objc_class_name_DOMSVGMatrix
-.objc_class_name_DOMSVGMetadataElement
-.objc_class_name_DOMSVGNumber
-.objc_class_name_DOMSVGNumberList
-.objc_class_name_DOMSVGPaint
-.objc_class_name_DOMSVGPathElement
-.objc_class_name_DOMSVGPathSeg
-.objc_class_name_DOMSVGPathSegArcAbs
-.objc_class_name_DOMSVGPathSegArcRel
-.objc_class_name_DOMSVGPathSegClosePath
-.objc_class_name_DOMSVGPathSegCurvetoCubicAbs
-.objc_class_name_DOMSVGPathSegCurvetoCubicRel
-.objc_class_name_DOMSVGPathSegCurvetoCubicSmoothAbs
-.objc_class_name_DOMSVGPathSegCurvetoCubicSmoothRel
-.objc_class_name_DOMSVGPathSegCurvetoQuadraticAbs
-.objc_class_name_DOMSVGPathSegCurvetoQuadraticRel
-.objc_class_name_DOMSVGPathSegCurvetoQuadraticSmoothAbs
-.objc_class_name_DOMSVGPathSegCurvetoQuadraticSmoothRel
-.objc_class_name_DOMSVGPathSegLinetoAbs
-.objc_class_name_DOMSVGPathSegLinetoHorizontalAbs
-.objc_class_name_DOMSVGPathSegLinetoHorizontalRel
-.objc_class_name_DOMSVGPathSegLinetoRel
-.objc_class_name_DOMSVGPathSegLinetoVerticalAbs
-.objc_class_name_DOMSVGPathSegLinetoVerticalRel
-.objc_class_name_DOMSVGPathSegList
-.objc_class_name_DOMSVGPathSegMovetoAbs
-.objc_class_name_DOMSVGPathSegMovetoRel
-.objc_class_name_DOMSVGPatternElement
-.objc_class_name_DOMSVGPoint
-.objc_class_name_DOMSVGPointList
-.objc_class_name_DOMSVGPolygonElement
-.objc_class_name_DOMSVGPolylineElement
-.objc_class_name_DOMSVGPreserveAspectRatio
-.objc_class_name_DOMSVGRadialGradientElement
-.objc_class_name_DOMSVGRect
-.objc_class_name_DOMSVGRectElement
-.objc_class_name_DOMSVGRenderingIntent
-.objc_class_name_DOMSVGSVGElement
-.objc_class_name_DOMSVGScriptElement
-.objc_class_name_DOMSVGSetElement
-.objc_class_name_DOMSVGStopElement
-.objc_class_name_DOMSVGStringList
-.objc_class_name_DOMSVGStyleElement
-.objc_class_name_DOMSVGSwitchElement
-.objc_class_name_DOMSVGSymbolElement
-.objc_class_name_DOMSVGTRefElement
-.objc_class_name_DOMSVGTSpanElement
-.objc_class_name_DOMSVGTextContentElement
-.objc_class_name_DOMSVGTextElement
-.objc_class_name_DOMSVGTextPathElement
-.objc_class_name_DOMSVGTextPositioningElement
-.objc_class_name_DOMSVGTitleElement
-.objc_class_name_DOMSVGTransform
-.objc_class_name_DOMSVGTransformList
-.objc_class_name_DOMSVGUnitTypes
-.objc_class_name_DOMSVGUseElement
-.objc_class_name_DOMSVGViewElement
-.objc_class_name_DOMSVGZoomEvent
diff --git a/WebCore/WebCore.Tiger.exp b/WebCore/WebCore.Tiger.exp
deleted file mode 100644
index b45c753..0000000
--- a/WebCore/WebCore.Tiger.exp
+++ /dev/null
@@ -1,13 +0,0 @@
-_wkClearGlyphVector
-_wkConvertCharToGlyphs
-_wkCopyFullFontName
-_wkGetATSStyleGroup
-_wkGetCGFontFromNSFont
-_wkGetFontMetrics
-_wkGetGlyphVectorFirstRecord
-_wkGetGlyphVectorNumGlyphs
-_wkGetGlyphVectorRecordSize
-_wkGetNSFontATSUFontId
-_wkInitializeGlyphVector
-_wkReleaseStyleGroup
-_wkSupportsMultipartXMixedReplace
diff --git a/WebCore/WebCore.Video.exp b/WebCore/WebCore.Video.exp
deleted file mode 100644
index 631a601..0000000
--- a/WebCore/WebCore.Video.exp
+++ /dev/null
@@ -1,18 +0,0 @@
-__ZN7WebCore16HTMLMediaElement10screenRectEv
-__ZN7WebCore16HTMLMediaElement12endScrubbingEv
-__ZN7WebCore16HTMLMediaElement14beginScrubbingEv
-__ZN7WebCore16HTMLMediaElement14exitFullscreenEv
-__ZN7WebCore16HTMLMediaElement14setCurrentTimeEfRi
-__ZN7WebCore16HTMLMediaElement4playEb
-__ZN7WebCore16HTMLMediaElement5pauseEb
-__ZN7WebCore16HTMLMediaElement6rewindEf
-__ZN7WebCore16HTMLMediaElement8setMutedEb
-__ZN7WebCore16HTMLMediaElement9setVolumeEfRi
-__ZNK7WebCore16HTMLMediaElement11currentTimeEv
-__ZNK7WebCore16HTMLMediaElement13platformMediaEv
-__ZNK7WebCore16HTMLMediaElement21processingUserGestureEv
-__ZNK7WebCore16HTMLMediaElement5mutedEv
-__ZNK7WebCore16HTMLMediaElement6volumeEv
-__ZNK7WebCore16HTMLMediaElement7canPlayEv
-__ZNK7WebCore16HTMLMediaElement12playbackRateEv
-__ZNK7WebCore16HTMLMediaElement8durationEv
diff --git a/WebCore/WebCore.VideoProxy.exp b/WebCore/WebCore.VideoProxy.exp
deleted file mode 100644
index 6412d2c..0000000
--- a/WebCore/WebCore.VideoProxy.exp
+++ /dev/null
@@ -1,4 +0,0 @@
-__ZN7WebCore16HTMLMediaElement19deliverNotificationE32MediaPlayerProxyNotificationType
-__ZN7WebCore16HTMLMediaElement19setMediaPlayerProxyEP19WebMediaPlayerProxy
-__ZN7WebCore9HTMLNames8audioTagE
-__ZN7WebCore9HTMLNames8videoTagE
diff --git a/WebCore/WebCore.base.exp b/WebCore/WebCore.exp.in
index beb5b44..71c632f 100644
--- a/WebCore/WebCore.base.exp
+++ b/WebCore/WebCore.exp.in
@@ -142,7 +142,7 @@ __ZN7WebCore10handCursorEv
__ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKNS_6StringE
__ZN7WebCore11BitmapImageC1EP7CGImagePNS_13ImageObserverE
__ZN7WebCore11CachedFrame23cachedFramePlatformDataEv
-__ZN7WebCore11CachedFrame26setCachedFramePlatformDataEPNS_23CachedFramePlatformDataE
+__ZN7WebCore11CachedFrame26setCachedFramePlatformDataEN3WTF10PassOwnPtrINS_23CachedFramePlatformDataEEE
__ZN7WebCore11EditCommand7reapplyEv
__ZN7WebCore11EditCommand7unapplyEv
__ZN7WebCore11FileChooser10chooseFileERKNS_6StringE
@@ -317,29 +317,6 @@ __ZN7WebCore14SecurityOrigin40setDomainRelaxationForbiddenForURLSchemeEbRKNS_6St
__ZN7WebCore14SecurityOrigin6createERKNS_4KURLEi
__ZN7WebCore14SecurityOrigin7canLoadERKNS_4KURLERKNS_6StringEPNS_8DocumentE
__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_RKNS_16ResourceResponseE
-__ZN7WebCore15BackForwardList10removeItemEPNS_11HistoryItemE
-__ZN7WebCore15BackForwardList10setEnabledEb
-__ZN7WebCore15BackForwardList11currentItemEv
-__ZN7WebCore15BackForwardList11forwardItemEv
-__ZN7WebCore15BackForwardList11itemAtIndexEi
-__ZN7WebCore15BackForwardList11setCapacityEi
-__ZN7WebCore15BackForwardList12containsItemEPNS_11HistoryItemE
-__ZN7WebCore15BackForwardList13backListCountEv
-__ZN7WebCore15BackForwardList16forwardListCountEv
-__ZN7WebCore15BackForwardList17backListWithLimitEiRN3WTF6VectorINS1_6RefPtrINS_11HistoryItemEEELm0EEE
-__ZN7WebCore15BackForwardList20forwardListWithLimitEiRN3WTF6VectorINS1_6RefPtrINS_11HistoryItemEEELm0EEE
-__ZN7WebCore15BackForwardList5closeEv
-__ZN7WebCore15BackForwardList6closedEv
-__ZN7WebCore15BackForwardList6goBackEv
-__ZN7WebCore15BackForwardList7addItemEN3WTF10PassRefPtrINS_11HistoryItemEEE
-__ZN7WebCore15BackForwardList7enabledEv
-__ZN7WebCore15BackForwardList7entriesEv
-__ZN7WebCore15BackForwardList8backItemEv
-__ZN7WebCore15BackForwardList8capacityEv
-__ZN7WebCore15BackForwardList8goToItemEPNS_11HistoryItemE
-__ZN7WebCore15BackForwardList9goForwardEv
-__ZN7WebCore15BackForwardListC1EPNS_4PageE
-__ZN7WebCore15BackForwardListD1Ev
__ZN7WebCore15DOMWrapperWorld15unregisterWorldEv
__ZN7WebCore15DOMWrapperWorldD1Ev
__ZN7WebCore15DatabaseTracker12deleteOriginEPNS_14SecurityOriginE
@@ -422,10 +399,11 @@ __ZN7WebCore19AnimationController16resumeAnimationsEPNS_8DocumentE
__ZN7WebCore19AnimationController17suspendAnimationsEPNS_8DocumentE
__ZN7WebCore19AnimationController20pauseAnimationAtTimeEPNS_12RenderObjectERKNS_6StringEd
__ZN7WebCore19AnimationController21pauseTransitionAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore19BackForwardListImplC1EPNS_4PageE
__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_Ri
__ZN7WebCore19InspectorController34inspectorStartsAttachedSettingNameEv
__ZN7WebCore19SelectionController10setFocusedEb
-__ZN7WebCore19SelectionController12setSelectionERKNS_16VisibleSelectionEbbbNS0_19CursorAlignOnScrollENS_15TextGranularityE
+__ZN7WebCore19SelectionController12setSelectionERKNS_16VisibleSelectionEbbbNS0_19CursorAlignOnScrollENS_15TextGranularityENS_20DirectionalityPolicyE
__ZN7WebCore19SelectionController16setSelectedRangeEPNS_5RangeENS_9EAffinityEb
__ZN7WebCore19SelectionController5clearEv
__ZN7WebCore19SelectionController6modifyENS0_11EAlterationENS0_10EDirectionENS_15TextGranularityEb
@@ -515,7 +493,6 @@ __ZN7WebCore4Page13didStopPluginEPNS_14HaltablePluginE
__ZN7WebCore4Page14didStartPluginEPNS_14HaltablePluginE
__ZN7WebCore4Page14setMediaVolumeEf
__ZN7WebCore4Page15addSchedulePairEN3WTF10PassRefPtrINS_12SchedulePairEEE
-__ZN7WebCore4Page15backForwardListEv
__ZN7WebCore4Page15didMoveOnscreenEv
__ZN7WebCore4Page16setCanStartMediaEb
__ZN7WebCore4Page16setDefersLoadingEb
@@ -531,7 +508,7 @@ __ZN7WebCore4Page6goBackEv
__ZN7WebCore4Page8goToItemEPNS_11HistoryItemENS_13FrameLoadTypeE
__ZN7WebCore4Page9goForwardEv
__ZN7WebCore4Page9initGroupEv
-__ZN7WebCore4PageC1EPNS_12ChromeClientEPNS_17ContextMenuClientEPNS_12EditorClientEPNS_10DragClientEPNS_15InspectorClientEPNS_18PluginHalterClientEPNS_27GeolocationControllerClientEPNS_23DeviceOrientationClientE
+__ZN7WebCore4PageC1EPNS_12ChromeClientEPNS_17ContextMenuClientEPNS_12EditorClientEPNS_10DragClientEPNS_15InspectorClientEPNS_18PluginHalterClientEPNS_27GeolocationControllerClientEPNS_23DeviceOrientationClientEPNS_27BackForwardControllerClientE
__ZN7WebCore4PageD1Ev
__ZN7WebCore4coreEP20NSURLProtectionSpace
__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS_19CSSStyleDeclarationE
@@ -617,6 +594,7 @@ __ZN7WebCore6WidgetD2Ev
__ZN7WebCore7Console21shouldPrintExceptionsEv
__ZN7WebCore7Console24setShouldPrintExceptionsEb
__ZN7WebCore7IntRect5uniteERKS0_
+__ZN7WebCore7IntRect9intersectERKS0_
__ZN7WebCore7IntRectC1ERKNS_9FloatRectE
__ZN7WebCore7IntSizeC1ERK7_NSSize
__ZN7WebCore7cookiesEPKNS_8DocumentERKNS_4KURLE
@@ -630,8 +608,10 @@ __ZN7WebCore8Document17getFocusableNodesERN3WTF6VectorINS1_6RefPtrINS_4NodeEEELm
__ZN7WebCore8Document19accessSVGExtensionsEv
__ZN7WebCore8Document22createDocumentFragmentEv
__ZN7WebCore8Document23renderedRectsForMarkersENS_14DocumentMarker10MarkerTypeE
+__ZN7WebCore8Document24addMediaCanStartListenerEPNS_21MediaCanStartListenerE
__ZN7WebCore8Document24setShouldCreateRenderersEb
__ZN7WebCore8Document26pageSizeAndMarginsInPixelsEiRNS_7IntSizeERiS3_S3_S3_
+__ZN7WebCore8Document27removeMediaCanStartListenerEPNS_21MediaCanStartListenerE
__ZN7WebCore8Document36updateLayoutIgnorePendingStylesheetsEv
__ZN7WebCore8Document4headEv
__ZN7WebCore8FormDataD1Ev
@@ -772,10 +752,10 @@ __ZN7WebCore9PageCache11setCapacityEi
__ZN7WebCore9PageCache27releaseAutoreleasedPagesNowEv
__ZN7WebCore9PageGroup14addVisitedLinkEPKtm
__ZN7WebCore9PageGroup17closeLocalStorageEv
-__ZN7WebCore9PageGroup20addUserScriptToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_NS_23UserScriptInjectionTimeE
+__ZN7WebCore9PageGroup20addUserScriptToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_NS_23UserScriptInjectionTimeENS_25UserContentInjectedFramesE
__ZN7WebCore9PageGroup20removeAllUserContentEv
__ZN7WebCore9PageGroup21removeAllVisitedLinksEv
-__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_
+__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_NS_25UserContentInjectedFramesE
__ZN7WebCore9PageGroup25removeUserScriptFromWorldEPNS_15DOMWrapperWorldERKNS_4KURLE
__ZN7WebCore9PageGroup26removeUserScriptsFromWorldEPNS_15DOMWrapperWorldE
__ZN7WebCore9PageGroup26setShouldTrackVisitedLinksEb
@@ -799,6 +779,7 @@ __ZNK7WebCore10RenderText9firstRunXEv
__ZNK7WebCore10RenderText9firstRunYEv
__ZNK7WebCore10ScrollView12documentViewEv
__ZNK7WebCore10ScrollView14scrollbarModesERNS_13ScrollbarModeES2_
+__ZNK7WebCore10ScrollView16contentsToWindowERKNS_7IntRectE
__ZNK7WebCore10ScrollView18visibleContentRectEb
__ZNK7WebCore11CachedImage5imageEv
__ZNK7WebCore11FrameLoader10isCompleteEv
@@ -873,6 +854,8 @@ __ZNK7WebCore14RenderListItem10markerTextEv
__ZNK7WebCore14ResourceHandle10connectionEv
__ZNK7WebCore14ResourceLoader11frameLoaderEv
__ZNK7WebCore14SecurityOrigin5equalEPKS0_
+__ZNK7WebCore15GraphicsContext15platformContextEv
+__ZNK7WebCore15GraphicsContext16paintingDisabledEv
__ZNK7WebCore15ProgressTracker17estimatedProgressEv
__ZNK7WebCore15ResourceRequest12nsURLRequestEv
__ZNK7WebCore15VisiblePosition14characterAfterEv
@@ -901,6 +884,7 @@ __ZNK7WebCore20ResourceResponseBase16textEncodingNameEv
__ZNK7WebCore20ResourceResponseBase17suggestedFilenameEv
__ZNK7WebCore20ResourceResponseBase3urlEv
__ZNK7WebCore20ResourceResponseBase8mimeTypeEv
+__ZNK7WebCore21UserContentURLPattern7matchesERKNS_4KURLE
__ZNK7WebCore23FrameLoaderStateMachine15firstLayoutDoneEv
__ZNK7WebCore23FrameLoaderStateMachine23committingFirstRealLoadEv
__ZNK7WebCore26NetscapePlugInStreamLoader6isDoneEv
@@ -916,6 +900,7 @@ __ZNK7WebCore4Node14isDescendantOfEPKS0_
__ZNK7WebCore4Node18getSubresourceURLsERN3WTF11ListHashSetINS_4KURLELm256ENS_8KURLHashEEE
__ZNK7WebCore4Node9nodeIndexEv
__ZNK7WebCore4Page10pluginDataEv
+__ZNK7WebCore4Page15backForwardListEv
__ZNK7WebCore4Page34inLowQualityImageInterpolationModeEv
__ZNK7WebCore4Page9groupNameEv
__ZNK7WebCore5Frame11currentFormEv
@@ -966,6 +951,7 @@ __ZNK7WebCore6Widget23convertToContainingViewERKNS_7IntRectE
__ZNK7WebCore6Widget23convertToContainingViewERKNS_8IntPointE
__ZNK7WebCore6Widget25convertFromContainingViewERKNS_7IntRectE
__ZNK7WebCore6Widget25convertFromContainingViewERKNS_8IntPointE
+__ZNK7WebCore6Widget25convertToContainingWindowERKNS_7IntRectE
__ZNK7WebCore6Widget9frameRectEv
__ZNK7WebCore7Element12getAttributeERKNS_13QualifiedNameE
__ZNK7WebCore7Element9innerTextEv
@@ -974,6 +960,7 @@ __ZNK7WebCore7IntRectcv7_NSRectEv
__ZNK7WebCore7IntSizecv7_NSSizeEv
__ZNK7WebCore8Document11completeURLERKNS_6StringE
__ZNK7WebCore8Document13axObjectCacheEv
+__ZNK7WebCore8Document14getElementByIdERKNS_12AtomicStringE
__ZNK7WebCore8Document20cacheDocumentElementEv
__ZNK7WebCore8Document31displayStringModifiedByEncodingERKNS_6StringE
__ZNK7WebCore8Document4bodyEv
@@ -1066,3 +1053,343 @@ _wkSetUpFontCache
_wkSignalCFReadStreamEnd
_wkSignalCFReadStreamError
_wkSignalCFReadStreamHasBytes
+
+#if ENABLE(3D_RENDERING)
+_WebCoreHas3DRendering
+#endif
+
+#if USE(ACCELERATED_COMPOSITING)
+__ZN7WebCore13GraphicsLayer17removeAllChildrenEv
+__ZN7WebCore13GraphicsLayer6createEPNS_19GraphicsLayerClientE
+#endif
+
+#if ENABLE(CONTEXT_MENUS)
+__ZN7WebCore11ContextMenu22setPlatformDescriptionEP14NSMutableArray
+__ZN7WebCore12EventHandler20sendContextMenuEventEP7NSEvent
+__ZN7WebCore15ContextMenuItem26releasePlatformDescriptionEv
+__ZN7WebCore21ContextMenuController16clearContextMenuEv
+__ZNK7WebCore11ContextMenu19platformDescriptionEv
+#endif
+
+#if ENABLE(DASHBOARD_SUPPORT)
+.objc_class_name_WebDashboardRegion
+__ZN7WebCore5Frame26dashboardRegionsDictionaryEv
+__ZN7WebCore8Settings41setUsesDashboardBackwardCompatibilityModeEb
+#endif
+
+#if ENABLE(DRAG_SUPPORT)
+__ZN7WebCore12EventHandler17dragSourceEndedAtERKNS_18PlatformMouseEventENS_13DragOperationE
+__ZN7WebCore12EventHandler17eventMayStartDragEP7NSEvent
+__ZN7WebCore14DragController10dragExitedEPNS_8DragDataE
+__ZN7WebCore14DragController11dragEnteredEPNS_8DragDataE
+__ZN7WebCore14DragController11dragUpdatedEPNS_8DragDataE
+__ZN7WebCore14DragController11performDragEPNS_8DragDataE
+__ZN7WebCore14DragController14placeDragCaretERKNS_8IntPointE
+__ZN7WebCore14DragController9dragEndedEv
+__ZN7WebCore8DragDataC1EP11objc_objectRKNS_8IntPointES5_NS_13DragOperationEPNS_16PasteboardHelperE
+#endif
+
+#if ENABLE(GEOLOCATION)
+#if ENABLE(CLIENT_BASED_GEOLOCATION)
+__ZN7WebCore21GeolocationController13errorOccurredEPNS_16GeolocationErrorE
+__ZN7WebCore21GeolocationController15positionChangedEPNS_19GeolocationPositionE
+#else
+__ZN7WebCore22GeolocationServiceMock11setPositionEN3WTF10PassRefPtrINS_11GeopositionEEE
+__ZN7WebCore22GeolocationServiceMock8setErrorEN3WTF10PassRefPtrINS_13PositionErrorEEE
+#endif
+#endif
+
+#if ENABLE(INSPECTOR)
+__ZN7WebCore19InspectorController10setSettingERKNS_6StringES3_
+__ZN7WebCore19InspectorController14enableDebuggerEv
+__ZN7WebCore19InspectorController14enableProfilerEbb
+__ZN7WebCore19InspectorController15disableDebuggerEb
+__ZN7WebCore19InspectorController15disableProfilerEb
+__ZN7WebCore19InspectorController18disconnectFrontendEv
+__ZN7WebCore19InspectorController20stopTimelineProfilerEv
+__ZN7WebCore19InspectorController21startTimelineProfilerEv
+__ZN7WebCore19InspectorController25evaluateForTestInFrontendElRKNS_6StringE
+__ZN7WebCore19InspectorController26setInspectorFrontendClientEN3WTF10PassOwnPtrINS_23InspectorFrontendClientEEE
+__ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv
+__ZN7WebCore19InspectorController27startUserInitiatedProfilingEPNS_5TimerIS0_EE
+__ZN7WebCore19InspectorController4showEv
+__ZN7WebCore19InspectorController5closeEv
+__ZN7WebCore19InspectorController7inspectEPNS_4NodeE
+__ZN7WebCore19InspectorController9showPanelENS0_13SpecialPanelsE
+__ZN7WebCore28InspectorFrontendClientLocal12moveWindowByEff
+__ZN7WebCore28InspectorFrontendClientLocal14frontendLoadedEv
+__ZN7WebCore28InspectorFrontendClientLocal15canAttachWindowEv
+__ZN7WebCore28InspectorFrontendClientLocal17setAttachedWindowEb
+__ZN7WebCore28InspectorFrontendClientLocal19requestAttachWindowEv
+__ZN7WebCore28InspectorFrontendClientLocal19requestDetachWindowEv
+__ZN7WebCore28InspectorFrontendClientLocal19windowObjectClearedEv
+__ZN7WebCore28InspectorFrontendClientLocal26changeAttachedWindowHeightEj
+__ZN7WebCore28InspectorFrontendClientLocal27restoreAttachedWindowHeightEv
+__ZN7WebCore28InspectorFrontendClientLocalC2EPNS_19InspectorControllerEPNS_4PageE
+__ZN7WebCore28InspectorFrontendClientLocalD2Ev
+__ZNK7WebCore19InspectorController17drawNodeHighlightERNS_15GraphicsContextE
+__ZNK7WebCore19InspectorController7enabledEv
+__ZNK7WebCore19InspectorController7settingERKNS_6StringE
+#endif
+
+#if ENABLE(JAVA_BRIDGE)
+_KJS_JSCreateNativeJSObject
+_KJS_JSObject_JSFinalize
+_KJS_JSObject_JSObjectCall
+_KJS_JSObject_JSObjectEval
+_KJS_JSObject_JSObjectGetMember
+_KJS_JSObject_JSObjectGetSlot
+_KJS_JSObject_JSObjectRemoveMember
+_KJS_JSObject_JSObjectSetMember
+_KJS_JSObject_JSObjectSetSlot
+_KJS_JSObject_JSObjectToString
+#endif
+
+#if ENABLE(NETSCAPE_PLUGIN_API)
+__NPN_Construct
+__NPN_CreateObject
+__NPN_Enumerate
+__NPN_Evaluate
+__NPN_GetIntIdentifier
+__NPN_GetProperty
+__NPN_GetStringIdentifier
+__NPN_GetStringIdentifiers
+__NPN_HasMethod
+__NPN_HasProperty
+__NPN_IdentifierIsString
+__NPN_IntFromIdentifier
+__NPN_Invoke
+__NPN_InvokeDefault
+__NPN_ReleaseObject
+__NPN_ReleaseVariantValue
+__NPN_RemoveProperty
+__NPN_RetainObject
+__NPN_SetException
+__NPN_SetProperty
+__NPN_UTF8FromIdentifier
+__ZN7WebCore16ScriptController20windowScriptNPObjectEv
+__ZN7WebCore16ScriptController29cleanupScriptObjectsForPluginEPv
+__ZNK7WebCore12RenderObject4viewEv
+__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_
+__ZNK7WebCore4KURL7hasPathEv
+__ZNK7WebCore4KURL9prettyURLEv
+__ZNK7WebCore9FrameView22windowClipRectForLayerEPKNS_11RenderLayerEb
+#endif
+
+#if ENABLE(ORIENTATION_EVENTS)
+__ZN7WebCore5Frame26sendOrientationChangeEventEi
+#endif
+
+#if USE(PLUGIN_HOST_PROCESS)
+__ZN3JSC13RuntimeMethod11getCallDataERNS_8CallDataE
+__ZN3JSC13RuntimeMethod18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC13RuntimeMethod24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE
+__ZN3JSC13RuntimeMethod6s_infoE
+__ZN3JSC13RuntimeMethodC2EPNS_9ExecStateEPNS_14JSGlobalObjectERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
+__ZN3JSC8Bindings10RootObjectD1Ev
+__ZN3JSC8Bindings13RuntimeObject11getCallDataERNS_8CallDataE
+__ZN3JSC8Bindings13RuntimeObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSC8Bindings13RuntimeObject16getConstructDataERNS_13ConstructDataE
+__ZN3JSC8Bindings13RuntimeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC8Bindings13RuntimeObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
+__ZN3JSC8Bindings13RuntimeObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE
+__ZN3JSC8Bindings13RuntimeObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8Bindings13RuntimeObject6s_infoE
+__ZN3JSC8Bindings13RuntimeObjectC2EPNS_9ExecStateEPNS_14JSGlobalObjectEN3WTF10PassRefPtrINS0_8InstanceEEE
+__ZN3JSC8Bindings13RuntimeObjectD2Ev
+__ZN3JSC8Bindings8Instance19createRuntimeObjectEPNS_9ExecStateE
+__ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings8InstanceD2Ev
+__ZN7WebCore13IdentifierRep3getEPKc
+__ZN7WebCore13IdentifierRep3getEi
+__ZN7WebCore13IdentifierRep7isValidEPS0_
+__ZN7WebCore16ScriptController16createRootObjectEPv
+__ZN7WebCore16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
+__ZN7WebCore16ScriptController24jsObjectForPluginElementEPNS_17HTMLPlugInElementE
+__ZNK3JSC8Bindings13RuntimeObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZTVN3JSC13RuntimeMethodE
+#endif
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+__ZN7WebCore3macERKNS_15ProtectionSpaceE
+__ZNK7WebCore15ProtectionSpace20authenticationSchemeEv
+#endif
+
+#if ENABLE(SVG_ANIMATION) && ENABLE(SVG_DOM_OBJC_BINDINGS)
+.objc_class_name_DOMSVGAnimateElement
+.objc_class_name_DOMSVGAnimateTransformElement
+#endif
+
+#if ENABLE(SVG) && ENABLE(SVG_DOM_OBJC_BINDINGS)
+.objc_class_name_DOMSVGAElement
+.objc_class_name_DOMSVGAltGlyphElement
+.objc_class_name_DOMSVGAngle
+.objc_class_name_DOMSVGAnimateColorElement
+.objc_class_name_DOMSVGAnimatedAngle
+.objc_class_name_DOMSVGAnimatedBoolean
+.objc_class_name_DOMSVGAnimatedEnumeration
+.objc_class_name_DOMSVGAnimatedInteger
+.objc_class_name_DOMSVGAnimatedLength
+.objc_class_name_DOMSVGAnimatedLengthList
+.objc_class_name_DOMSVGAnimatedNumber
+.objc_class_name_DOMSVGAnimatedNumberList
+.objc_class_name_DOMSVGAnimatedPreserveAspectRatio
+.objc_class_name_DOMSVGAnimatedRect
+.objc_class_name_DOMSVGAnimatedString
+.objc_class_name_DOMSVGAnimatedTransformList
+.objc_class_name_DOMSVGAnimationElement
+.objc_class_name_DOMSVGCircleElement
+.objc_class_name_DOMSVGClipPathElement
+.objc_class_name_DOMSVGColor
+.objc_class_name_DOMSVGCursorElement
+.objc_class_name_DOMSVGDefsElement
+.objc_class_name_DOMSVGDescElement
+.objc_class_name_DOMSVGDocument
+.objc_class_name_DOMSVGElement
+.objc_class_name_DOMSVGElementInstance
+.objc_class_name_DOMSVGElementInstanceList
+.objc_class_name_DOMSVGEllipseElement
+.objc_class_name_DOMSVGGElement
+.objc_class_name_DOMSVGGradientElement
+.objc_class_name_DOMSVGImageElement
+.objc_class_name_DOMSVGLength
+.objc_class_name_DOMSVGLengthList
+.objc_class_name_DOMSVGLineElement
+.objc_class_name_DOMSVGLinearGradientElement
+.objc_class_name_DOMSVGMarkerElement
+.objc_class_name_DOMSVGMaskElement
+.objc_class_name_DOMSVGMatrix
+.objc_class_name_DOMSVGMetadataElement
+.objc_class_name_DOMSVGNumber
+.objc_class_name_DOMSVGNumberList
+.objc_class_name_DOMSVGPaint
+.objc_class_name_DOMSVGPathElement
+.objc_class_name_DOMSVGPathSeg
+.objc_class_name_DOMSVGPathSegArcAbs
+.objc_class_name_DOMSVGPathSegArcRel
+.objc_class_name_DOMSVGPathSegClosePath
+.objc_class_name_DOMSVGPathSegCurvetoCubicAbs
+.objc_class_name_DOMSVGPathSegCurvetoCubicRel
+.objc_class_name_DOMSVGPathSegCurvetoCubicSmoothAbs
+.objc_class_name_DOMSVGPathSegCurvetoCubicSmoothRel
+.objc_class_name_DOMSVGPathSegCurvetoQuadraticAbs
+.objc_class_name_DOMSVGPathSegCurvetoQuadraticRel
+.objc_class_name_DOMSVGPathSegCurvetoQuadraticSmoothAbs
+.objc_class_name_DOMSVGPathSegCurvetoQuadraticSmoothRel
+.objc_class_name_DOMSVGPathSegLinetoAbs
+.objc_class_name_DOMSVGPathSegLinetoHorizontalAbs
+.objc_class_name_DOMSVGPathSegLinetoHorizontalRel
+.objc_class_name_DOMSVGPathSegLinetoRel
+.objc_class_name_DOMSVGPathSegLinetoVerticalAbs
+.objc_class_name_DOMSVGPathSegLinetoVerticalRel
+.objc_class_name_DOMSVGPathSegList
+.objc_class_name_DOMSVGPathSegMovetoAbs
+.objc_class_name_DOMSVGPathSegMovetoRel
+.objc_class_name_DOMSVGPatternElement
+.objc_class_name_DOMSVGPoint
+.objc_class_name_DOMSVGPointList
+.objc_class_name_DOMSVGPolygonElement
+.objc_class_name_DOMSVGPolylineElement
+.objc_class_name_DOMSVGPreserveAspectRatio
+.objc_class_name_DOMSVGRadialGradientElement
+.objc_class_name_DOMSVGRect
+.objc_class_name_DOMSVGRectElement
+.objc_class_name_DOMSVGRenderingIntent
+.objc_class_name_DOMSVGSVGElement
+.objc_class_name_DOMSVGScriptElement
+.objc_class_name_DOMSVGSetElement
+.objc_class_name_DOMSVGStopElement
+.objc_class_name_DOMSVGStringList
+.objc_class_name_DOMSVGStyleElement
+.objc_class_name_DOMSVGSwitchElement
+.objc_class_name_DOMSVGSymbolElement
+.objc_class_name_DOMSVGTRefElement
+.objc_class_name_DOMSVGTSpanElement
+.objc_class_name_DOMSVGTextContentElement
+.objc_class_name_DOMSVGTextElement
+.objc_class_name_DOMSVGTextPathElement
+.objc_class_name_DOMSVGTextPositioningElement
+.objc_class_name_DOMSVGTitleElement
+.objc_class_name_DOMSVGTransform
+.objc_class_name_DOMSVGTransformList
+.objc_class_name_DOMSVGUnitTypes
+.objc_class_name_DOMSVGUseElement
+.objc_class_name_DOMSVGViewElement
+.objc_class_name_DOMSVGZoomEvent
+#endif
+
+#if ENABLE(SVG_FILTERS) && ENABLE(SVG_DOM_OBJC_BINDINGS)
+.objc_class_name_DOMSVGComponentTransferFunctionElement
+.objc_class_name_DOMSVGFEBlendElement
+.objc_class_name_DOMSVGFEColorMatrixElement
+.objc_class_name_DOMSVGFEComponentTransferElement
+.objc_class_name_DOMSVGFECompositeElement
+.objc_class_name_DOMSVGFEDiffuseLightingElement
+.objc_class_name_DOMSVGFEDisplacementMapElement
+.objc_class_name_DOMSVGFEDistantLightElement
+.objc_class_name_DOMSVGFEFloodElement
+.objc_class_name_DOMSVGFEFuncAElement
+.objc_class_name_DOMSVGFEFuncBElement
+.objc_class_name_DOMSVGFEFuncGElement
+.objc_class_name_DOMSVGFEFuncRElement
+.objc_class_name_DOMSVGFEGaussianBlurElement
+.objc_class_name_DOMSVGFEImageElement
+.objc_class_name_DOMSVGFEMergeElement
+.objc_class_name_DOMSVGFEMergeNodeElement
+.objc_class_name_DOMSVGFEMorphologyElement
+.objc_class_name_DOMSVGFEOffsetElement
+.objc_class_name_DOMSVGFEPointLightElement
+.objc_class_name_DOMSVGFESpecularLightingElement
+.objc_class_name_DOMSVGFESpotLightElement
+.objc_class_name_DOMSVGFETileElement
+.objc_class_name_DOMSVGFETurbulenceElement
+.objc_class_name_DOMSVGFilterElement
+#endif
+
+#if ENABLE(SVG_FOREIGN_OBJECT) && ENABLE(SVG_DOM_OBJC_BINDINGS)
+.objc_class_name_DOMSVGForeignObjectElement
+#endif
+
+#if defined(BUILDING_ON_TIGER)
+_wkClearGlyphVector
+_wkConvertCharToGlyphs
+_wkCopyFullFontName
+_wkGetATSStyleGroup
+_wkGetCGFontFromNSFont
+_wkGetFontMetrics
+_wkGetGlyphVectorFirstRecord
+_wkGetGlyphVectorNumGlyphs
+_wkGetGlyphVectorRecordSize
+_wkGetNSFontATSUFontId
+_wkInitializeGlyphVector
+_wkReleaseStyleGroup
+_wkSupportsMultipartXMixedReplace
+#endif
+
+#if ENABLE(VIDEO)
+__ZN7WebCore16HTMLMediaElement10screenRectEv
+__ZN7WebCore16HTMLMediaElement12endScrubbingEv
+__ZN7WebCore16HTMLMediaElement14beginScrubbingEv
+__ZN7WebCore16HTMLMediaElement14exitFullscreenEv
+__ZN7WebCore16HTMLMediaElement14setCurrentTimeEfRi
+__ZN7WebCore16HTMLMediaElement4playEb
+__ZN7WebCore16HTMLMediaElement5pauseEb
+__ZN7WebCore16HTMLMediaElement6rewindEf
+__ZN7WebCore16HTMLMediaElement8setMutedEb
+__ZN7WebCore16HTMLMediaElement9setVolumeEfRi
+__ZNK7WebCore16HTMLMediaElement11currentTimeEv
+__ZNK7WebCore16HTMLMediaElement13platformMediaEv
+__ZNK7WebCore16HTMLMediaElement21processingUserGestureEv
+__ZNK7WebCore16HTMLMediaElement5mutedEv
+__ZNK7WebCore16HTMLMediaElement6volumeEv
+__ZNK7WebCore16HTMLMediaElement7canPlayEv
+__ZNK7WebCore16HTMLMediaElement12playbackRateEv
+__ZNK7WebCore16HTMLMediaElement8durationEv
+#endif
+
+#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
+__ZN7WebCore16HTMLMediaElement19deliverNotificationE32MediaPlayerProxyNotificationType
+__ZN7WebCore16HTMLMediaElement19setMediaPlayerProxyEP19WebMediaPlayerProxy
+__ZN7WebCore9HTMLNames8audioTagE
+__ZN7WebCore9HTMLNames8videoTagE
+#endif
diff --git a/WebCore/WebCore.gyp/WebCore.gyp b/WebCore/WebCore.gyp/WebCore.gyp
index 1821ffc..3b94644 100644
--- a/WebCore/WebCore.gyp/WebCore.gyp
+++ b/WebCore/WebCore.gyp/WebCore.gyp
@@ -388,6 +388,27 @@
],
},
{
+ 'action_name': 'MathMLNames',
+ 'inputs': [
+ '../dom/make_names.pl',
+ '../mathml/mathtags.in',
+ '../mathml/mathattrs.in',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.cpp',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.h',
+ ],
+ 'action': [
+ 'python',
+ 'scripts/action_makenames.py',
+ '<@(_outputs)',
+ '--',
+ '<@(_inputs)',
+ '--',
+ '--extraDefines', '<(feature_defines)'
+ ],
+ },
+ {
'action_name': 'UserAgentStyleSheets',
'inputs': [
'../css/make-css-file-arrays.pl',
@@ -454,6 +475,40 @@
],
},
{
+ 'action_name': 'InspectorFrontend2',
+ 'inputs': [
+ '../bindings/scripts/generate-bindings.pl',
+ '../bindings/scripts/CodeGenerator.pm',
+ '../bindings/scripts/IDLParser.pm',
+ '../bindings/scripts/IDLStructure.pm',
+ '../inspector/CodeGeneratorInspector.pm',
+ '../inspector/InspectorFrontend2.idl',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/RemoteInspectorFrontend2.cpp',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/RemoteInspectorFrontend2.h',
+ ],
+ 'variables': {
+ 'generator_include_dirs': [
+ ],
+ },
+ 'action': [
+ 'python',
+ 'scripts/rule_binding.py',
+ '../inspector/InspectorFrontend2.idl',
+ '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings',
+ '--',
+ '<@(_inputs)',
+ '--',
+ '--defines', 'LANGUAGE_JAVASCRIPT',
+ '--prefix', 'Remote',
+ '--generator', 'Inspector',
+ '<@(generator_include_dirs)'
+ ],
+ 'message': 'Generating InspectorFrontend2 class from InspectorFrontend2.idl',
+ },
+ {
'action_name': 'XMLNames',
'inputs': [
'../dom/make_names.pl',
@@ -651,10 +706,15 @@
'<(SHARED_INTERMEDIATE_DIR)/webkit/XLinkNames.cpp',
'<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNSNames.cpp',
'<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNames.cpp',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGNames.cpp',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.cpp',
# Additional .cpp files from the webcore_bindings_sources rules.
'<(SHARED_INTERMEDIATE_DIR)/webkit/CSSGrammar.cpp',
'<(SHARED_INTERMEDIATE_DIR)/webkit/XPathGrammar.cpp',
+
+ # Additional .cpp files from the webcore_inspector_sources list.
+ '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/RemoteInspectorFrontend2.cpp',
],
'conditions': [
['javascript_engine=="v8"', {
@@ -672,7 +732,6 @@
['enable_svg!=0', {
'sources': [
'<(SHARED_INTERMEDIATE_DIR)/webkit/SVGElementFactory.cpp',
- '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGNames.cpp',
'<(SHARED_INTERMEDIATE_DIR)/webkit/V8SVGElementWrapperFactory.cpp',
],
}],
@@ -781,7 +840,7 @@
'../storage/IndexedDatabase.cpp',
# Use history/BackForwardListChromium.cpp instead.
- '../history/BackForwardList.cpp',
+ '../history/BackForwardListImpl.cpp',
# Use loader/icon/IconDatabaseNone.cpp instead.
'../loader/icon/IconDatabase.cpp',
diff --git a/WebCore/WebCore.gyp/scripts/rule_binding.py b/WebCore/WebCore.gyp/scripts/rule_binding.py
index 24d178f..f7f3ed1 100644
--- a/WebCore/WebCore.gyp/scripts/rule_binding.py
+++ b/WebCore/WebCore.gyp/scripts/rule_binding.py
@@ -95,6 +95,14 @@ def main(args):
if not includeDir in includeDirs:
includeDirs.append(includeDir)
+ if '--prefix' in options:
+ prefixIndex = options.index('--prefix')
+ else:
+ prefixIndex = options.index('--generator')
+
+ if prefixIndex + 1 < len(options):
+ prefix = options[prefixIndex + 1]
+
# The defines come in as one flat string. Split it up into distinct arguments.
if '--defines' in options:
definesIndex = options.index('--defines')
@@ -122,7 +130,7 @@ def main(args):
if cppdir != hdir:
inputBasename = os.path.basename(input)
(root, ext) = os.path.splitext(inputBasename)
- hname = 'V8%s.h' % root
+ hname = '%s%s.h' % (prefix, root)
hsrc = os.path.join(cppdir, hname)
hdst = os.path.join(hdir, hname)
shutil.copyfile(hsrc, hdst)
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 2c221d9..1ccbc3f 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -224,10 +224,10 @@
'page/Timing.idl',
'page/WebKitPoint.idl',
'page/WorkerNavigator.idl',
- 'plugins/MimeType.idl',
- 'plugins/MimeTypeArray.idl',
- 'plugins/Plugin.idl',
- 'plugins/PluginArray.idl',
+ 'plugins/DOMMimeType.idl',
+ 'plugins/DOMMimeTypeArray.idl',
+ 'plugins/DOMPlugin.idl',
+ 'plugins/DOMPluginArray.idl',
'storage/Database.idl',
'storage/DatabaseCallback.idl',
'storage/DatabaseSync.idl',
@@ -238,6 +238,7 @@
'storage/IDBErrorEvent.idl',
'storage/IDBEvent.idl',
'storage/IDBIndexRequest.idl',
+ 'storage/IDBKey.idl',
'storage/IDBKeyRange.idl',
'storage/IDBObjectStoreRequest.idl',
'storage/IDBRequest.idl',
@@ -277,6 +278,9 @@
'xml/XPathResult.idl',
'xml/XSLTProcessor.idl',
],
+ 'webcore_inspector_idl_files': [
+ 'inspector/InspectorFrontend2.idl',
+ ],
'webcore_svg_bindings_idl_files': [
'svg/ElementTimeControl.idl',
'svg/SVGAElement.idl',
@@ -602,7 +606,7 @@
'bindings/js/JSMessageEventCustom.cpp',
'bindings/js/JSMessagePortCustom.cpp',
'bindings/js/JSMessagePortCustom.h',
- 'bindings/js/JSMimeTypeArrayCustom.cpp',
+ 'bindings/js/JSDOMMimeTypeArrayCustom.cpp',
'bindings/js/JSNamedNodeMapCustom.cpp',
'bindings/js/JSNamedNodesCollection.cpp',
'bindings/js/JSNamedNodesCollection.h',
@@ -616,8 +620,8 @@
'bindings/js/JSNodeListCustom.cpp',
'bindings/js/JSOptionConstructor.cpp',
'bindings/js/JSOptionConstructor.h',
- 'bindings/js/JSPluginArrayCustom.cpp',
- 'bindings/js/JSPluginCustom.cpp',
+ 'bindings/js/JSDOMPluginArrayCustom.cpp',
+ 'bindings/js/JSDOMPluginCustom.cpp',
'bindings/js/JSPluginElementFunctions.cpp',
'bindings/js/JSPluginElementFunctions.h',
'bindings/js/JSRGBColor.cpp',
@@ -692,8 +696,11 @@
'bindings/js/WorkerScriptController.cpp',
'bindings/js/WorkerScriptController.h',
'bindings/ScriptControllerBase.cpp',
+ 'bindings/ScriptControllerBase.h',
'bindings/v8/ChildThreadDOMData.cpp',
'bindings/v8/ChildThreadDOMData.h',
+ 'bindings/v8/IDBBindingUtilities.cpp',
+ 'bindings/v8/IDBBindingUtilities.h',
'bindings/v8/custom/V8CanvasPixelArrayCustom.cpp',
'bindings/v8/custom/V8ArrayBufferViewCustom.h',
'bindings/v8/custom/V8ArrayBufferViewCustom.cpp',
@@ -760,6 +767,7 @@
'bindings/v8/custom/V8HTMLSelectElementCustom.cpp',
'bindings/v8/custom/V8HTMLSelectElementCustom.h',
'bindings/v8/custom/V8IDBAnyCustom.cpp',
+ 'bindings/v8/custom/V8IDBKeyCustom.cpp',
'bindings/v8/custom/V8InjectedScriptHostCustom.cpp',
'bindings/v8/custom/V8InspectorFrontendHostCustom.cpp',
'bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp',
@@ -1073,8 +1081,6 @@
'dom/CDATASection.h',
'dom/CSSMappedAttributeDeclaration.cpp',
'dom/CSSMappedAttributeDeclaration.h',
- 'dom/CanvasSurface.cpp',
- 'dom/CanvasSurface.h',
'dom/CharacterData.cpp',
'dom/CharacterData.h',
'dom/CheckedRadioButtons.cpp',
@@ -1113,9 +1119,9 @@
'dom/DatasetDOMStringMap.h',
'dom/DecodedDataDocumentParser.cpp',
'dom/DecodedDataDocumentParser.h',
- 'dom/DeviceOrientation.cpp',
- 'dom/DeviceOrientation.h',
'dom/DeviceOrientationClient.h',
+ 'dom/DeviceOrientationController.cpp',
+ 'dom/DeviceOrientationController.h',
'dom/DeviceOrientationEvent.cpp',
'dom/DeviceOrientationEvent.h',
'dom/Document.cpp',
@@ -1384,8 +1390,12 @@
'editing/visible_units.cpp',
'editing/visible_units.h',
'history/mac/HistoryItemMac.mm',
- 'history/BackForwardList.cpp',
+ 'history/BackForwardController.cpp',
+ 'history/BackForwardController.h',
+ 'history/BackForwardControllerClient.h',
'history/BackForwardList.h',
+ 'history/BackForwardListImpl.cpp',
+ 'history/BackForwardListImpl.h',
'history/BackForwardListChromium.cpp',
'history/CachedFrame.cpp',
'history/CachedFrame.h',
@@ -1529,6 +1539,8 @@
'html/HTMLCanvasElement.h',
'html/HTMLCollection.cpp',
'html/HTMLCollection.h',
+ 'html/HTMLConstructionSite.cpp',
+ 'html/HTMLConstructionSite.h',
'html/HTMLDListElement.cpp',
'html/HTMLDListElement.h',
'html/HTMLDataGridCellElement.cpp',
@@ -1708,6 +1720,8 @@
'inspector/InjectedScript.h',
'inspector/InjectedScriptHost.cpp',
'inspector/InjectedScriptHost.h',
+ 'inspector/InspectorApplicationCacheAgent.cpp',
+ 'inspector/InspectorApplicationCacheAgent.h',
'inspector/InspectorBackend.cpp',
'inspector/InspectorBackend.h',
'inspector/InspectorController.cpp',
@@ -2025,6 +2039,7 @@
'page/Timing.h',
'page/UserContentURLPattern.cpp',
'page/UserContentURLPattern.h',
+ 'page/UserContentTypes.h',
'page/UserScript.h',
'page/UserScriptTypes.h',
'page/UserStyleSheet.h',
@@ -3052,14 +3067,14 @@
'plugins/wx/PluginDataWx.cpp',
'plugins/wx/PluginPackageWx.cpp',
'plugins/wx/PluginViewWx.cpp',
- 'plugins/MimeType.cpp',
- 'plugins/MimeType.h',
- 'plugins/MimeTypeArray.cpp',
- 'plugins/MimeTypeArray.h',
- 'plugins/Plugin.cpp',
- 'plugins/Plugin.h',
- 'plugins/PluginArray.cpp',
- 'plugins/PluginArray.h',
+ 'plugins/DOMMimeType.cpp',
+ 'plugins/DOMMimeType.h',
+ 'plugins/DOMMimeTypeArray.cpp',
+ 'plugins/DOMMimeTypeArray.h',
+ 'plugins/DOMPlugin.cpp',
+ 'plugins/DOMPlugin.h',
+ 'plugins/DOMPluginArray.cpp',
+ 'plugins/DOMPluginArray.h',
'plugins/PluginData.cpp',
'plugins/PluginData.h',
'plugins/PluginDatabase.cpp',
@@ -3447,8 +3462,11 @@
'storage/IDBIndexImpl.h',
'storage/IDBIndexRequest.cpp',
'storage/IDBIndexRequest.h',
+ 'storage/IDBKey.cpp',
+ 'storage/IDBKey.h',
'storage/IDBKeyRange.cpp',
'storage/IDBKeyRange.h',
+ 'storage/IDBKeyTree.h',
'storage/IDBObjectStore.h',
'storage/IDBObjectStoreImpl.cpp',
'storage/IDBObjectStoreImpl.h',
@@ -3945,6 +3963,7 @@
'inspector/front-end/inspector.html',
'inspector/front-end/AbstractTimelinePanel.js',
+ 'inspector/front-end/ApplicationCacheItemsView.js',
'inspector/front-end/AuditCategories.js',
'inspector/front-end/AuditLauncherView.js',
'inspector/front-end/AuditResultView.js',
@@ -4048,6 +4067,7 @@
'inspector/front-end/textViewer.css',
],
'webinspector_image_files': [
+ 'inspector/front-end/Images/applicationCache.png',
'inspector/front-end/Images/auditsIcon.png',
'inspector/front-end/Images/back.png',
'inspector/front-end/Images/breakpointBorder.png',
diff --git a/WebCore/WebCore.pri b/WebCore/WebCore.pri
index 623dbb6..1451984 100644
--- a/WebCore/WebCore.pri
+++ b/WebCore/WebCore.pri
@@ -62,7 +62,6 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
!contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1
!contains(DEFINES, ENABLE_XHTMLMP=.): DEFINES += ENABLE_XHTMLMP=0
!contains(DEFINES, ENABLE_DATAGRID=.): DEFINES += ENABLE_DATAGRID=0
-!contains(DEFINES, ENABLE_VIDEO=.): DEFINES += ENABLE_VIDEO=1
!contains(DEFINES, ENABLE_RUBY=.): DEFINES += ENABLE_RUBY=1
!contains(DEFINES, ENABLE_SANDBOX=.): DEFINES += ENABLE_SANDBOX=1
!contains(DEFINES, ENABLE_METER_TAG=.): DEFINES += ENABLE_METER_TAG=1
@@ -88,9 +87,6 @@ greaterThan(QT_MINOR_VERSION, 5) {
DEFINES += ENABLE_SVG_FONTS=0 ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_ANIMATION=0 ENABLE_SVG_AS_IMAGE=0 ENABLE_SVG_USE=0
}
-# HTML5 media support
-!contains(DEFINES, ENABLE_VIDEO=.): DEFINES += ENABLE_VIDEO=1
-
# HTML5 datalist support
!contains(DEFINES, ENABLE_DATALIST=.): DEFINES += ENABLE_DATALIST=1
@@ -142,6 +138,21 @@ greaterThan(QT_MINOR_VERSION, 5) {
# Enable touch event support with Qt 4.6
!lessThan(QT_MINOR_VERSION, 6): DEFINES += ENABLE_TOUCH_EVENTS=1
+# HTML5 Media Support
+# We require QtMultimedia or Phonon
+!contains(DEFINES, ENABLE_VIDEO=.) {
+ DEFINES -= ENABLE_VIDEO=1
+ DEFINES += ENABLE_VIDEO=0
+
+ !lessThan(QT_MINOR_VERSION, 6):contains(MOBILITY_CONFIG, multimedia) {
+ DEFINES -= ENABLE_VIDEO=0
+ DEFINES += ENABLE_VIDEO=1
+ } else:contains(QT_CONFIG, phonon) {
+ DEFINES -= ENABLE_VIDEO=0
+ DEFINES += ENABLE_VIDEO=1
+ }
+}
+
# Used to compute defaults for the build-webkit script
CONFIG(compute_defaults) {
message($$DEFINES)
@@ -464,10 +475,10 @@ IDL_BINDINGS += \
page/Timing.idl \
page/WebKitPoint.idl \
page/WorkerNavigator.idl \
- plugins/Plugin.idl \
- plugins/MimeType.idl \
- plugins/PluginArray.idl \
- plugins/MimeTypeArray.idl \
+ plugins/DOMPlugin.idl \
+ plugins/DOMMimeType.idl \
+ plugins/DOMPluginArray.idl \
+ plugins/DOMMimeTypeArray.idl \
storage/Database.idl \
storage/DatabaseCallback.idl \
storage/DatabaseSync.idl \
@@ -478,6 +489,7 @@ IDL_BINDINGS += \
storage/IDBErrorEvent.idl \
storage/IDBEvent.idl \
storage/IDBIndexRequest.idl \
+ storage/IDBKey.idl \
storage/IDBKeyRange.idl \
storage/IDBObjectStoreRequest.idl \
storage/IDBRequest.idl \
@@ -652,14 +664,14 @@ IDL_BINDINGS += \
xml/XPathEvaluator.idl \
xml/XSLTProcessor.idl
-contains(DEFINES, ENABLE_MATHML=1) {
- mathmlnames.output = $${WC_GENERATED_SOURCES_DIR}/MathMLNames.cpp
- mathmlnames.input = MATHML_NAMES
- mathmlnames.wkScript = $$PWD/dom/make_names.pl
- mathmlnames.commands = perl -I$$PWD/bindings/scripts $$mathmlnames.wkScript --tags $$PWD/mathml/mathtags.in --attrs $$PWD/mathml/mathattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$WC_GENERATED_SOURCES_DIR
- mathmlnames.wkExtraSources = $${WC_GENERATED_SOURCES_DIR}/MathMLElementFactory.cpp
- addExtraCompiler(mathmlnames)
-}
+INSPECTOR_INTERFACES = inspector/InspectorFrontend2.idl
+
+mathmlnames.output = $${WC_GENERATED_SOURCES_DIR}/MathMLNames.cpp
+mathmlnames.input = MATHML_NAMES
+mathmlnames.wkScript = $$PWD/dom/make_names.pl
+mathmlnames.commands = perl -I$$PWD/bindings/scripts $$mathmlnames.wkScript --tags $$PWD/mathml/mathtags.in --attrs $$PWD/mathml/mathattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$WC_GENERATED_SOURCES_DIR
+mathmlnames.wkExtraSources = $${WC_GENERATED_SOURCES_DIR}/MathMLElementFactory.cpp
+addExtraCompiler(mathmlnames)
contains(DEFINES, ENABLE_WML=1) {
wmlnames.output = $${WC_GENERATED_SOURCES_DIR}/WMLNames.cpp
@@ -670,16 +682,14 @@ contains(DEFINES, ENABLE_WML=1) {
addExtraCompiler(wmlnames)
}
-contains(DEFINES, ENABLE_SVG=1) {
- # GENERATOR 5-C:
- svgnames.output = $${WC_GENERATED_SOURCES_DIR}/SVGNames.cpp
- svgnames.input = SVG_NAMES
- svgnames.depends = $$PWD/svg/svgattrs.in
- svgnames.wkScript = $$PWD/dom/make_names.pl
- svgnames.commands = perl -I$$PWD/bindings/scripts $$svgnames.wkScript --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$WC_GENERATED_SOURCES_DIR
- svgnames.wkExtraSources = $${WC_GENERATED_SOURCES_DIR}/SVGElementFactory.cpp $${WC_GENERATED_SOURCES_DIR}/JSSVGElementWrapperFactory.cpp
- addExtraCompiler(svgnames)
-}
+# GENERATOR 5-C:
+svgnames.output = $${WC_GENERATED_SOURCES_DIR}/SVGNames.cpp
+svgnames.input = SVG_NAMES
+svgnames.depends = $$PWD/svg/svgattrs.in
+svgnames.wkScript = $$PWD/dom/make_names.pl
+svgnames.commands = perl -I$$PWD/bindings/scripts $$svgnames.wkScript --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$WC_GENERATED_SOURCES_DIR
+svgnames.wkExtraSources = $${WC_GENERATED_SOURCES_DIR}/SVGElementFactory.cpp $${WC_GENERATED_SOURCES_DIR}/JSSVGElementWrapperFactory.cpp
+addExtraCompiler(svgnames)
# GENERATOR 5-D:
xlinknames.output = $${WC_GENERATED_SOURCES_DIR}/XLinkNames.cpp
@@ -717,6 +727,18 @@ idl.depends = $$PWD/bindings/scripts/CodeGenerator.pm \
$$PWD/bindings/scripts/InFilesParser.pm
addExtraCompiler(idl)
+# GENERATOR 2: inspector idl compiler
+inspectorIDL.output = $${WC_GENERATED_SOURCES_DIR}/Remote${QMAKE_FILE_BASE}.cpp
+inspectorIDL.input = INSPECTOR_INTERFACES
+inspectorIDL.wkScript = $$PWD/bindings/scripts/generate-bindings.pl
+inspectorIDL.commands = perl -I$$PWD/bindings/scripts -I$$PWD/inspector $$inspectorIDL.wkScript --defines \"$${FEATURE_DEFINES_JAVASCRIPT}\" --generator Inspector --outputDir $$WC_GENERATED_SOURCES_DIR --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_FILE_NAME}
+inspectorIDL.depends = $$PWD/bindings/scripts/CodeGenerator.pm \
+ $$PWD/inspector/CodeGeneratorInspector.pm \
+ $$PWD/bindings/scripts/IDLParser.pm \
+ $$PWD/bindings/scripts/IDLStructure.pm \
+ $$PWD/bindings/scripts/InFilesParser.pm
+addExtraCompiler(inspectorIDL)
+
# GENERATOR 3: tokenizer (flex)
tokenizer.output = $${WC_GENERATED_SOURCES_DIR}/${QMAKE_FILE_BASE}.cpp
tokenizer.input = TOKENIZER
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index b33a100..49149dc 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -143,19 +143,6 @@ contains(DEFINES, WTF_USE_QT_MOBILE_THEME=1) {
include($$PWD/../JavaScriptCore/JavaScriptCore.pri)
addJavaScriptCoreLib(../JavaScriptCore)
-
-# HTML5 Media Support
-# We require phonon. QtMultimedia support is disabled currently.
-!contains(DEFINES, ENABLE_VIDEO=.) {
- DEFINES -= ENABLE_VIDEO=1
- DEFINES += ENABLE_VIDEO=0
-
- contains(QT_CONFIG, phonon) {
- DEFINES -= ENABLE_VIDEO=0
- DEFINES += ENABLE_VIDEO=1
- }
-}
-
# Extract sources to build from the generator definitions
defineTest(addExtraCompiler) {
isEqual($${1}.wkAddOutputToSources, false): return(true)
@@ -180,6 +167,7 @@ include(WebCore.pri)
INCLUDEPATH = \
$$PWD \
$$PWD/accessibility \
+ $$PWD/bindings \
$$PWD/bindings/js \
$$PWD/bridge \
$$PWD/bridge/c \
@@ -350,13 +338,13 @@ SOURCES += \
bindings/js/JSWebKitPointCustom.cpp \
bindings/js/JSXMLHttpRequestCustom.cpp \
bindings/js/JSXMLHttpRequestUploadCustom.cpp \
- bindings/js/JSPluginCustom.cpp \
- bindings/js/JSPluginArrayCustom.cpp \
+ bindings/js/JSDOMPluginCustom.cpp \
+ bindings/js/JSDOMPluginArrayCustom.cpp \
bindings/js/JSMessageChannelCustom.cpp \
bindings/js/JSMessageEventCustom.cpp \
bindings/js/JSMessagePortCustom.cpp \
bindings/js/JSMessagePortCustom.h \
- bindings/js/JSMimeTypeArrayCustom.cpp \
+ bindings/js/JSDOMMimeTypeArrayCustom.cpp \
bindings/js/JSDOMBinding.cpp \
bindings/js/JSEventListener.cpp \
bindings/js/JSLazyEventListener.cpp \
@@ -460,7 +448,6 @@ SOURCES += \
dom/BeforeTextInsertedEvent.cpp \
dom/BeforeUnloadEvent.cpp \
dom/CDATASection.cpp \
- dom/CanvasSurface.cpp \
dom/CharacterData.cpp \
dom/CheckedRadioButtons.cpp \
dom/ChildNodeList.cpp \
@@ -475,7 +462,7 @@ SOURCES += \
dom/CSSMappedAttributeDeclaration.cpp \
dom/CustomEvent.cpp \
dom/DecodedDataDocumentParser.cpp \
- dom/DeviceOrientation.cpp \
+ dom/DeviceOrientationController.cpp \
dom/DeviceOrientationEvent.cpp \
dom/Document.cpp \
dom/DocumentFragment.cpp \
@@ -599,7 +586,8 @@ SOURCES += \
editing/VisibleSelection.cpp \
editing/visible_units.cpp \
editing/WrapContentsInDummySpanCommand.cpp \
- history/BackForwardList.cpp \
+ history/BackForwardController.cpp \
+ history/BackForwardListImpl.cpp \
history/CachedFrame.cpp \
history/CachedPage.cpp \
history/HistoryItem.cpp \
@@ -646,6 +634,7 @@ SOURCES += \
html/HTMLButtonElement.cpp \
html/HTMLCanvasElement.cpp \
html/HTMLCollection.cpp \
+ html/HTMLConstructionSite.cpp \
html/HTMLDataGridElement.cpp \
html/HTMLDataGridCellElement.cpp \
html/HTMLDataGridColElement.cpp \
@@ -729,6 +718,7 @@ SOURCES += \
inspector/ConsoleMessage.cpp \
inspector/InjectedScript.cpp \
inspector/InjectedScriptHost.cpp \
+ inspector/InspectorApplicationCacheAgent.cpp \
inspector/InspectorBackend.cpp \
inspector/InspectorCSSStore.cpp \
inspector/InspectorController.cpp \
@@ -839,11 +829,11 @@ SOURCES += \
page/WindowFeatures.cpp \
page/XSSAuditor.cpp \
plugins/PluginData.cpp \
- plugins/PluginArray.cpp \
- plugins/Plugin.cpp \
+ plugins/DOMPluginArray.cpp \
+ plugins/DOMPlugin.cpp \
plugins/PluginMainThreadScheduler.cpp \
- plugins/MimeType.cpp \
- plugins/MimeTypeArray.cpp \
+ plugins/DOMMimeType.cpp \
+ plugins/DOMMimeTypeArray.cpp \
platform/animation/Animation.cpp \
platform/animation/AnimationList.cpp \
platform/Arena.cpp \
@@ -1069,6 +1059,7 @@ HEADERS += \
accessibility/AccessibilityTableHeaderContainer.h \
accessibility/AccessibilityTableRow.h \
accessibility/AXObjectCache.h \
+ bindings/ScriptControllerBase.h \
bindings/js/CachedScriptSourceProvider.h \
bindings/js/GCController.h \
bindings/js/DOMObjectHashTableMap.h \
@@ -1228,8 +1219,8 @@ HEADERS += \
dom/CSSMappedAttributeDeclaration.h \
dom/CustomEvent.h \
dom/default/PlatformMessagePortChannel.h \
- dom/DeviceOrientation.h \
dom/DeviceOrientationClient.h \
+ dom/DeviceOrientationController.h \
dom/DeviceOrientationEvent.h \
dom/DocumentFragment.h \
dom/Document.h \
@@ -1349,6 +1340,9 @@ HEADERS += \
editing/VisibleSelection.h \
editing/visible_units.h \
editing/WrapContentsInDummySpanCommand.h \
+ history/BackForwardController.h \
+ history/BackForwardControllerClient.h \
+ history/BackForwardListImpl.h \
history/BackForwardList.h \
history/CachedFrame.h \
history/CachedPage.h \
@@ -1476,6 +1470,7 @@ HEADERS += \
inspector/ConsoleMessage.h \
inspector/InjectedScript.h \
inspector/InjectedScriptHost.h \
+ inspector/InspectorApplicationCacheAgent.h \
inspector/InspectorBackend.h \
inspector/InspectorController.h \
inspector/InspectorDatabaseResource.h \
@@ -1723,13 +1718,13 @@ HEADERS += \
platform/ThreadTimers.h \
platform/Timer.h \
platform/Widget.h \
- plugins/MimeTypeArray.h \
- plugins/MimeType.h \
- plugins/PluginArray.h \
+ plugins/DOMMimeTypeArray.h \
+ plugins/DOMMimeType.h \
+ plugins/DOMPluginArray.h \
plugins/PluginDatabase.h \
plugins/PluginData.h \
plugins/PluginDebug.h \
- plugins/Plugin.h \
+ plugins/DOMPlugin.h \
plugins/PluginMainThreadScheduler.h \
plugins/PluginPackage.h \
plugins/PluginStream.h \
@@ -2387,6 +2382,7 @@ contains(DEFINES, ENABLE_DATABASE=1) {
contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
HEADERS += \
+ bindings/js/IDBBindingUtilities.h \
storage/IDBAny.h \
storage/IDBCallbacks.h \
storage/IDBDatabase.h \
@@ -2399,6 +2395,7 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
storage/IDBIndex.h \
storage/IDBIndexImpl.h \
storage/IDBIndexRequest.h \
+ storage/IDBKey.h \
storage/IDBKeyRange.h \
storage/IDBObjectStore.h \
storage/IDBObjectStoreImpl.h \
@@ -2410,7 +2407,9 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
storage/IndexedDatabaseRequest.h
SOURCES += \
+ bindings/js/IDBBindingUtilities.cpp \
bindings/js/JSIDBAnyCustom.cpp \
+ bindings/js/JSIDBKeyCustom.cpp \
storage/IDBAny.cpp \
storage/IDBDatabaseImpl.cpp \
storage/IDBDatabaseRequest.cpp \
@@ -2418,6 +2417,7 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
storage/IDBEvent.cpp \
storage/IDBIndexImpl.cpp \
storage/IDBIndexRequest.cpp \
+ storage/IDBKey.cpp \
storage/IDBKeyRange.cpp \
storage/IDBObjectStoreImpl.cpp \
storage/IDBObjectStoreRequest.cpp \
@@ -2535,13 +2535,14 @@ contains(DEFINES, ENABLE_VIDEO=1) {
rendering/RenderMedia.cpp \
bindings/js/JSAudioConstructor.cpp
- # QtMultimedia disabled currently
- false:greaterThan(QT_MINOR_VERSION, 6) {
+ !lessThan(QT_MINOR_VERSION, 6):contains(MOBILITY_CONFIG, multimedia) {
HEADERS += platform/graphics/qt/MediaPlayerPrivateQt.h
SOURCES += platform/graphics/qt/MediaPlayerPrivateQt.cpp
- tobe|!tobe: QT += mediaservices
- } else {
+ CONFIG *= mobility
+ MOBILITY += multimedia
+ DEFINES += WTF_USE_QT_MULTIMEDIA
+ } else:contains(QT_CONFIG, phonon) {
HEADERS += \
platform/graphics/qt/MediaPlayerPrivatePhonon.h
@@ -2559,7 +2560,6 @@ contains(DEFINES, ENABLE_VIDEO=1) {
INCLUDEPATH += $$QMAKE_LIBDIR_QT/phonon.framework/Headers
}
}
-
}
contains(DEFINES, ENABLE_XPATH=1) {
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 2888801..4e77d82 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\text&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\cg\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cairo\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cairo\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cairo\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cairo\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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
@@ -344,7 +344,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\text&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\cg\*.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\text\transcoder\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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\text&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\cg\*.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\text\transcoder\*.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\*.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)..\bridge\jsc\*.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\animation\*.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)..\websockets\*.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\text\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\text&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>
@@ -9173,7 +9173,7 @@
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSMimeType.cpp"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMMimeType.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -9225,11 +9225,11 @@
</FileConfiguration>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSMimeType.h"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMMimeType.h"
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSMimeTypeArray.cpp"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMMimeTypeArray.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -9281,7 +9281,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSMimeTypeArray.h"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMMimeTypeArray.h"
>
</File>
<File
@@ -10125,7 +10125,7 @@
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSPlugin.cpp"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMPlugin.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -10177,11 +10177,11 @@
</FileConfiguration>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSPlugin.h"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMPlugin.h"
>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSPluginArray.cpp"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMPluginArray.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -10233,7 +10233,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSPluginArray.h"
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMPluginArray.h"
>
</File>
<File
@@ -20725,6 +20725,22 @@
>
</File>
<File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\MathMLElementFactory.cpp"
+ >
+ </File>
+ <File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\MathMLElementFactory.h"
+ >
+ </File>
+ <File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\MathMLNames.cpp"
+ >
+ </File>
+ <File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\MathMLNames.h"
+ >
+ </File>
+ <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\SVGElementFactory.cpp"
>
</File>
@@ -20745,6 +20761,14 @@
>
</File>
<File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\RemoteInspectorFrontend2.cpp"
+ >
+ </File>
+ <File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\RemoteInspectorFrontend2.h"
+ >
+ </File>
+ <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WMLElementFactory.cpp"
>
<FileConfiguration
@@ -22409,10 +22433,6 @@
>
</File>
<File
- RelativePath="..\page\Plugin.h"
- >
- </File>
- <File
RelativePath="..\page\PluginHalter.cpp"
>
</File>
@@ -32253,14 +32273,6 @@
>
</File>
<File
- RelativePath="..\dom\CanvasSurface.cpp"
- >
- </File>
- <File
- RelativePath="..\dom\CanvasSurface.h"
- >
- </File>
- <File
RelativePath="..\dom\CDATASection.cpp"
>
</File>
@@ -32389,15 +32401,15 @@
>
</File>
<File
- RelativePath="..\dom\DeviceOrientation.cpp"
+ RelativePath="..\dom\DeviceOrientationClient.h"
>
</File>
<File
- RelativePath="..\dom\DeviceOrientation.h"
+ RelativePath="..\dom\DeviceOrientationController.cpp"
>
</File>
<File
- RelativePath="..\dom\DeviceOrientationClient.h"
+ RelativePath="..\dom\DeviceOrientationController.h"
>
</File>
<File
@@ -40373,6 +40385,14 @@
>
</File>
<File
+ RelativePath="..\html\HTMLConstructionSite.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\html\HTMLConstructionSite.h"
+ >
+ </File>
+ <File
RelativePath="..\html\HTMLUListElement.cpp"
>
<FileConfiguration
@@ -40580,6 +40600,10 @@
RelativePath="..\bindings\ScriptControllerBase.cpp"
>
</File>
+ <File
+ RelativePath="..\bindings\ScriptControllerBase.h"
+ >
+ </File>
<Filter
Name="js"
>
@@ -43956,6 +43980,170 @@
</FileConfiguration>
</File>
<File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBKey.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>
+ <FileConfiguration
+ Name="Debug_All|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBKey.h"
+ >
+ </File>
+ <File
+ RelativePath="..\bindings\js\JSIDBKeyCustom.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>
+ <FileConfiguration
+ Name="Debug_All|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\bindings\js\IDBBindingUtilities.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>
+ <FileConfiguration
+ Name="Debug_All|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\bindings\js\IDBBindingUtilities.h"
+ >
+ </File>
+ <File
RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBDatabase.cpp"
>
<FileConfiguration
@@ -45216,7 +45404,7 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSMimeTypeArrayCustom.cpp"
+ RelativePath="..\bindings\js\JSDOMMimeTypeArrayCustom.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -45696,7 +45884,7 @@
>
</File>
<File
- RelativePath="..\bindings\js\JSPluginArrayCustom.cpp"
+ RelativePath="..\bindings\js\JSDOMPluginArrayCustom.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -45748,7 +45936,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\bindings\js\JSPluginCustom.cpp"
+ RelativePath="..\bindings\js\JSDOMPluginCustom.cpp"
>
<FileConfiguration
Name="Debug|Win32"
@@ -47949,19 +48137,19 @@
Name="plugins"
>
<File
- RelativePath="..\plugins\MimeType.cpp"
+ RelativePath="..\plugins\DOMMimeType.cpp"
>
</File>
<File
- RelativePath="..\plugins\MimeType.h"
+ RelativePath="..\plugins\DOMMimeType.h"
>
</File>
<File
- RelativePath="..\plugins\MimeTypeArray.cpp"
+ RelativePath="..\plugins\DOMMimeTypeArray.cpp"
>
</File>
<File
- RelativePath="..\plugins\MimeTypeArray.h"
+ RelativePath="..\plugins\DOMMimeTypeArray.h"
>
</File>
<File
@@ -47973,19 +48161,19 @@
>
</File>
<File
- RelativePath="..\plugins\Plugin.cpp"
+ RelativePath="..\plugins\DOMPlugin.cpp"
>
</File>
<File
- RelativePath="..\plugins\Plugin.h"
+ RelativePath="..\plugins\DOMPlugin.h"
>
</File>
<File
- RelativePath="..\plugins\PluginArray.cpp"
+ RelativePath="..\plugins\DOMPluginArray.cpp"
>
</File>
<File
- RelativePath="..\plugins\PluginArray.h"
+ RelativePath="..\plugins\DOMPluginArray.h"
>
</File>
<File
@@ -49461,7 +49649,15 @@
Name="history"
>
<File
- RelativePath="..\history\BackForwardList.cpp"
+ RelativePath="..\history\BackForwardController.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\history\BackForwardController.h"
+ >
+ </File>
+ <File
+ RelativePath="..\history\BackForwardControllerClient.h"
>
</File>
<File
@@ -49469,6 +49665,14 @@
>
</File>
<File
+ RelativePath="..\history\BackForwardListImpl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\history\BackForwardListImpl.h"
+ >
+ </File>
+ <File
RelativePath="..\history\CachedFrame.cpp"
>
</File>
@@ -49665,6 +49869,14 @@
>
</File>
<File
+ RelativePath="..\storage\IDBKey.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\storage\IDBKey.h"
+ >
+ </File>
+ <File
RelativePath="..\storage\IDBKeyRange.cpp"
>
</File>
@@ -50105,6 +50317,14 @@
>
</File>
<File
+ RelativePath="..\inspector\InspectorApplicationCacheAgent.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\inspector\InspectorApplicationCacheAgent.h"
+ >
+ </File>
+ <File
RelativePath="..\inspector\InspectorBackend.cpp"
>
</File>
@@ -50240,6 +50460,10 @@
>
</File>
<File
+ RelativePath="..\inspector\front-end\ApplicationCacheItemsView.js"
+ >
+ </File>
+ <File
RelativePath="..\inspector\front-end\AuditCategories.js"
>
</File>
diff --git a/WebCore/WebCore.vcproj/WebCoreCommon.vsprops b/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
index 4283526..71105bc 100644
--- a/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
+++ b/WebCore/WebCore.vcproj/WebCoreCommon.vsprops
@@ -7,7 +7,7 @@
>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..&quot;;&quot;$(ProjectDir)..\accessibility&quot;;&quot;$(ProjectDir)..\accessibility\win&quot;;&quot;$(ProjectDir)..\bridge&quot;;&quot;$(ProjectDir)..\bridge\c&quot;;&quot;$(ProjectDir)..\bridge\jsc&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\mock&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\filters&quot;;&quot;$(ProjectDir)..\platform\graphics\opentype&quot;;&quot;$(ProjectDir)..\platform\graphics\transforms&quot;;&quot;$(ProjectDir)..\platform\text&quot;;&quot;$(ProjectDir)..\platform\text\transcoder&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\animation&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)..\websockets&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\pthreads&quot;;&quot;$(WebKitLibrariesDir)\include\sqlite&quot;;&quot;$(WebKitLibrariesDir)\include\JavaScriptCore&quot;"
+ AdditionalIncludeDirectories="&quot;$(ProjectDir)..&quot;;&quot;$(ProjectDir)..\accessibility&quot;;&quot;$(ProjectDir)..\accessibility\win&quot;;&quot;$(ProjectDir)..\bridge&quot;;&quot;$(ProjectDir)..\bridge\c&quot;;&quot;$(ProjectDir)..\bridge\jsc&quot;;&quot;$(ProjectDir)..\css&quot;;&quot;$(ProjectDir)..\editing&quot;;&quot;$(ProjectDir)..\rendering&quot;;&quot;$(ProjectDir)..\rendering\style&quot;;&quot;$(ProjectDir)..\bindings&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\mock&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\filters&quot;;&quot;$(ProjectDir)..\platform\graphics\opentype&quot;;&quot;$(ProjectDir)..\platform\graphics\transforms&quot;;&quot;$(ProjectDir)..\platform\text&quot;;&quot;$(ProjectDir)..\platform\text\transcoder&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\animation&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)..\websockets&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\pthreads&quot;;&quot;$(WebKitLibrariesDir)\include\sqlite&quot;;&quot;$(WebKitLibrariesDir)\include\JavaScriptCore&quot;"
PreprocessorDefinitions="__WIN32__;DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="WebCorePrefix.h"
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 0215ac0..1cd25ec 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -7,6 +7,17 @@
objects = {
/* Begin PBXAggregateTarget section */
+ 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 5D87BB6C11E3EC0000702B6F /* Build configuration list for PBXAggregateTarget "WebCoreExportFileGenerator Generator" */;
+ buildPhases = (
+ 5D87BB6311E3EBC100702B6F /* Generate Export File Generator */,
+ );
+ dependencies = (
+ );
+ name = "WebCoreExportFileGenerator Generator";
+ productName = "WebCoreExportFileGenerator Generator";
+ };
DD041FBE09D9DDBE0010AF2A /* Derived Sources */ = {
isa = PBXAggregateTarget;
buildConfigurationList = DD041FC109D9DDDC0010AF2A /* Build configuration list for PBXAggregateTarget "Derived Sources" */;
@@ -14,6 +25,7 @@
DD041FBD09D9DDBE0010AF2A /* Generate Derived Sources */,
);
dependencies = (
+ 5D87BB8F11E3EE2B00702B6F /* PBXTargetDependency */,
);
name = "Derived Sources";
productName = "Derived Sources";
@@ -23,6 +35,7 @@
/* Begin PBXBuildFile section */
0014628A103CD1DE000B20DB /* OriginAccessEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */; };
0014628B103CD1DE000B20DB /* OriginAccessEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 00146289103CD1DE000B20DB /* OriginAccessEntry.h */; };
+ 003F1FEA11E6AB43008258D9 /* UserContentTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 003F1FE911E6AB43008258D9 /* UserContentTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
06027CAD0B1CBFC000884B2D /* ContextMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
06027CB30B1CC03D00884B2D /* ContextMenuItemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06027CB20B1CC03D00884B2D /* ContextMenuItemMac.mm */; };
062287840B4DB322000C34DF /* FocusDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 062287830B4DB322000C34DF /* FocusDirection.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -192,8 +205,6 @@
0B90561E0F257E930095FF6A /* ThreadableLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B90561D0F257E930095FF6A /* ThreadableLoader.cpp */; };
0B9056F80F2685F30095FF6A /* WorkerThreadableLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B9056F60F2685F30095FF6A /* WorkerThreadableLoader.cpp */; };
0B9056F90F2685F30095FF6A /* WorkerThreadableLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9056F70F2685F30095FF6A /* WorkerThreadableLoader.h */; settings = {ATTRIBUTES = (); }; };
- 0BC2C7771134A8FC000B2F61 /* CanvasSurface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BC2C7751134A8FC000B2F61 /* CanvasSurface.cpp */; };
- 0BC2C7781134A8FC000B2F61 /* CanvasSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC2C7761134A8FC000B2F61 /* CanvasSurface.h */; };
0BE030A20F3112FB003C1A46 /* RenderLineBoxList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */; settings = {ATTRIBUTES = (Private, ); }; };
0C3F1F5A10C8871200D72CE1 /* WebGLUniformLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C3F1F5710C8871200D72CE1 /* WebGLUniformLocation.cpp */; };
0C3F1F5B10C8871200D72CE1 /* WebGLUniformLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3F1F5810C8871200D72CE1 /* WebGLUniformLocation.h */; };
@@ -1019,6 +1030,7 @@
4F1534E011B533020021FD86 /* EditingBehaviorTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */; };
4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3289B411A42AAB005ABE7E /* InspectorValues.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 4F4F5FFB11CBD2E100A186BF /* RemoteInspectorFrontend2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend2.cpp */; };
4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */; };
4FD8D0F3119C718B002FA825 /* ScriptGCEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */; };
510184690B08602A004A825F /* CachedPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 510184670B08602A004A825F /* CachedPage.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -1101,7 +1113,6 @@
51721FD311D27EF200638B42 /* JSBeforeProcessEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 51721FD111D27EF200638B42 /* JSBeforeProcessEvent.h */; };
5172204B11D2960500638B42 /* BeforeProcessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5172204A11D2960500638B42 /* BeforeProcessEvent.cpp */; };
51741D0F0B07259A00ED442C /* BackForwardList.h in Headers */ = {isa = PBXBuildFile; fileRef = 51741D0B0B07259A00ED442C /* BackForwardList.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 51741D100B07259A00ED442C /* BackForwardList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51741D0C0B07259A00ED442C /* BackForwardList.cpp */; };
51741D110B07259A00ED442C /* HistoryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 51741D0D0B07259A00ED442C /* HistoryItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
51741D120B07259A00ED442C /* HistoryItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51741D0E0B07259A00ED442C /* HistoryItem.cpp */; };
5174E20A10A1F44F00F95E6F /* PopStateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5174E20810A1F44F00F95E6F /* PopStateEvent.h */; };
@@ -1180,8 +1191,8 @@
59A85EA4119D68EC00DEF1EF /* DeviceOrientationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A85EA3119D68EC00DEF1EF /* DeviceOrientationEvent.h */; };
59A86006119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A86005119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp */; };
59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A86007119DAFA100DEF1EF /* JSDeviceOrientationEvent.h */; };
- 59A8F1D411A69508001AC34A /* DeviceOrientation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A8F1D311A69508001AC34A /* DeviceOrientation.cpp */; };
- 59A8F1D611A69513001AC34A /* DeviceOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A8F1D511A69513001AC34A /* DeviceOrientation.h */; };
+ 59A8F1D411A69508001AC34A /* DeviceOrientationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */; };
+ 59A8F1D611A69513001AC34A /* DeviceOrientationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */; };
59A8F1D811A69520001AC34A /* DeviceOrientationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */; };
59A9E7B01104758800DFB4C1 /* JavaInstanceJSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A9E7AF1104758800DFB4C1 /* JavaInstanceJSC.cpp */; };
59A9E7B21104759400DFB4C1 /* JavaInstanceJSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A9E7B11104759400DFB4C1 /* JavaInstanceJSC.h */; };
@@ -1199,6 +1210,7 @@
5D15E3AB0F9E6AC1009E0E3F /* XMLDocumentParserScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D15E3A90F9E6AC1009E0E3F /* XMLDocumentParserScope.cpp */; };
5D15E3AC0F9E6AC1009E0E3F /* XMLDocumentParserScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D15E3AA0F9E6AC1009E0E3F /* XMLDocumentParserScope.h */; };
5D874F130D161D3200796C3B /* NetscapePlugInStreamLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E227DD0AF589AD00D48324 /* NetscapePlugInStreamLoader.cpp */; };
+ 5D87BB8311E3ED8600702B6F /* ExportFileGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */; };
5D88EE9111407FD300BC3ABC /* DOMSVGFEMorphologyElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 84224189107E786F00766A87 /* DOMSVGFEMorphologyElement.h */; };
5D88EE9211407FF400BC3ABC /* DOMSVGFEMorphologyElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8422418B107E786F00766A87 /* DOMSVGFEMorphologyElementInternal.h */; };
5D925B670F64D4DD00B847F0 /* ScrollBehavior.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D925B650F64D4DD00B847F0 /* ScrollBehavior.cpp */; };
@@ -1379,10 +1391,6 @@
7AED3E060FBB1EAA00D2B03C /* InspectorFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AED3E040FBB1EAA00D2B03C /* InspectorFrontend.h */; };
7AFD4A8B1131C2760035B883 /* ScriptBreakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
7AFD4FF4113277B60035B883 /* ScriptDebugListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 816C806811BE887E009A45E9 /* IDBKeyRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 816C806611BE887E009A45E9 /* IDBKeyRange.cpp */; };
- 816C806911BE887E009A45E9 /* IDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 816C806711BE887E009A45E9 /* IDBKeyRange.h */; };
- 816C80AF11BE990D009A45E9 /* JSIDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 816C80AE11BE990D009A45E9 /* JSIDBKeyRange.h */; };
- 816C80B111BE9934009A45E9 /* JSIDBKeyRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 816C80B011BE9934009A45E9 /* JSIDBKeyRange.cpp */; };
82B658981189E39200E052A1 /* InspectorCSSStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B658971189E39200E052A1 /* InspectorCSSStore.h */; settings = {ATTRIBUTES = (Private, ); }; };
82B6589A1189E47600E052A1 /* InspectorCSSStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82B658991189E47600E052A1 /* InspectorCSSStore.cpp */; };
841FDC261178C9BE00F8AC9B /* RenderSVGResourceFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841FDC241178C9BE00F8AC9B /* RenderSVGResourceFilter.cpp */; };
@@ -2302,6 +2310,12 @@
8A81BF8511DCFD9000DA2B98 /* ResourceLoadTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A81BF8411DCFD9000DA2B98 /* ResourceLoadTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
8A844D0411D3C18E0014065C /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A844D0111D3C18E0014065C /* Performance.cpp */; };
8A844D0511D3C18E0014065C /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A844D0211D3C18E0014065C /* Performance.h */; };
+ 8A9A587011E84C36008ACFD1 /* JSNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A9A586E11E84C35008ACFD1 /* JSNavigation.cpp */; };
+ 8A9A587111E84C36008ACFD1 /* JSNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A586F11E84C36008ACFD1 /* JSNavigation.h */; };
+ 8A9A587411E84C81008ACFD1 /* JSPerformance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A9A587211E84C81008ACFD1 /* JSPerformance.cpp */; };
+ 8A9A587511E84C81008ACFD1 /* JSPerformance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587311E84C81008ACFD1 /* JSPerformance.h */; };
+ 8A9A588711E84F37008ACFD1 /* JSTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A9A587611E84C98008ACFD1 /* JSTiming.cpp */; };
+ 8A9A588811E84F37008ACFD1 /* JSTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587711E84C98008ACFD1 /* JSTiming.h */; };
8AF4E55511DC5A36000ED3DE /* Navigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AF4E55211DC5A36000ED3DE /* Navigation.cpp */; };
8AF4E55611DC5A36000ED3DE /* Navigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF4E55311DC5A36000ED3DE /* Navigation.h */; };
8AF4E55B11DC5A63000ED3DE /* Timing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AF4E55811DC5A63000ED3DE /* Timing.cpp */; };
@@ -2595,6 +2609,8 @@
97E8B35611A23CE200169409 /* HTMLTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97E8B35411A23CE200169409 /* HTMLTokenizer.cpp */; };
97E8B35711A23CE200169409 /* HTMLTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E8B35511A23CE200169409 /* HTMLTokenizer.h */; };
97E8B3C311A2890800169409 /* HTMLToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E8B3C211A2890800169409 /* HTMLToken.h */; };
+ 97EF561011E40783007E026F /* HTMLConstructionSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97EF560E11E40783007E026F /* HTMLConstructionSite.cpp */; };
+ 97EF561111E40783007E026F /* HTMLConstructionSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 97EF560F11E40783007E026F /* HTMLConstructionSite.h */; };
97EF7DFE107E55B700D7C49C /* ScriptControllerBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */; };
9F6FC1961122E82A00E80196 /* ScriptDebugServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */; };
9F6FC1971122E82A00E80196 /* ScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -3499,32 +3515,32 @@
A8F5C0B90F9285AC0098E06B /* RenderSVGModelObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8F5C0B70F9285AC0098E06B /* RenderSVGModelObject.cpp */; };
A8FA6E5D0E4CFDED00D5CF49 /* Pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = A8FA6E5B0E4CFDED00D5CF49 /* Pattern.h */; };
A8FA6E5E0E4CFDED00D5CF49 /* Pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8FA6E5C0E4CFDED00D5CF49 /* Pattern.cpp */; };
- A9C6E4E30D745E05006442E9 /* MimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E10D745E05006442E9 /* MimeType.cpp */; };
- A9C6E4E40D745E05006442E9 /* MimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E20D745E05006442E9 /* MimeType.h */; };
- A9C6E4E70D745E18006442E9 /* MimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E50D745E18006442E9 /* MimeTypeArray.cpp */; };
- A9C6E4E80D745E18006442E9 /* MimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E60D745E18006442E9 /* MimeTypeArray.h */; };
- A9C6E4EB0D745E2B006442E9 /* Plugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E90D745E2B006442E9 /* Plugin.cpp */; };
- A9C6E4EC0D745E2B006442E9 /* Plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EA0D745E2B006442E9 /* Plugin.h */; };
- A9C6E4EF0D745E38006442E9 /* PluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4ED0D745E38006442E9 /* PluginArray.cpp */; };
- A9C6E4F00D745E38006442E9 /* PluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EE0D745E38006442E9 /* PluginArray.h */; };
+ A9C6E4E30D745E05006442E9 /* DOMMimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */; };
+ A9C6E4E40D745E05006442E9 /* DOMMimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E20D745E05006442E9 /* DOMMimeType.h */; };
+ A9C6E4E70D745E18006442E9 /* DOMMimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */; };
+ A9C6E4E80D745E18006442E9 /* DOMMimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */; };
+ A9C6E4EB0D745E2B006442E9 /* DOMPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */; };
+ A9C6E4EC0D745E2B006442E9 /* DOMPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */; };
+ A9C6E4EF0D745E38006442E9 /* DOMPluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */; };
+ A9C6E4F00D745E38006442E9 /* DOMPluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */; };
A9C6E4F30D745E48006442E9 /* PluginData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4F10D745E48006442E9 /* PluginData.cpp */; };
A9C6E4F40D745E48006442E9 /* PluginData.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4F20D745E48006442E9 /* PluginData.h */; settings = {ATTRIBUTES = (Private, ); }; };
A9C6E5A50D746458006442E9 /* Navigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E5A30D746458006442E9 /* Navigator.cpp */; };
A9C6E5A60D746458006442E9 /* Navigator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E5A40D746458006442E9 /* Navigator.h */; };
- A9C6E6470D7465CA006442E9 /* JSMimeTypeArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E6460D7465CA006442E9 /* JSMimeTypeArrayCustom.cpp */; };
+ A9C6E6470D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */; };
A9C6E6490D7465D8006442E9 /* JSNavigatorCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E6480D7465D8006442E9 /* JSNavigatorCustom.cpp */; };
- A9C6E64C0D7465E7006442E9 /* JSPluginArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64A0D7465E7006442E9 /* JSPluginArrayCustom.cpp */; };
- A9C6E64D0D7465E7006442E9 /* JSPluginCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64B0D7465E7006442E9 /* JSPluginCustom.cpp */; };
+ A9C6E64C0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */; };
+ A9C6E64D0D7465E7006442E9 /* JSDOMPluginCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */; };
A9D247F70D757E3400FDF959 /* JSNavigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247F50D757E3300FDF959 /* JSNavigator.cpp */; };
A9D247F80D757E3400FDF959 /* JSNavigator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247F60D757E3300FDF959 /* JSNavigator.h */; };
- A9D247FE0D757E6900FDF959 /* JSPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FA0D757E6900FDF959 /* JSPlugin.cpp */; };
- A9D247FF0D757E6900FDF959 /* JSPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FB0D757E6900FDF959 /* JSPlugin.h */; };
- A9D248000D757E6900FDF959 /* JSPluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FC0D757E6900FDF959 /* JSPluginArray.cpp */; };
- A9D248010D757E6900FDF959 /* JSPluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FD0D757E6900FDF959 /* JSPluginArray.h */; };
- A9D248060D757E7D00FDF959 /* JSMimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248020D757E7D00FDF959 /* JSMimeType.cpp */; };
- A9D248070D757E7D00FDF959 /* JSMimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248030D757E7D00FDF959 /* JSMimeType.h */; };
- A9D248080D757E7D00FDF959 /* JSMimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248040D757E7D00FDF959 /* JSMimeTypeArray.cpp */; };
- A9D248090D757E7D00FDF959 /* JSMimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248050D757E7D00FDF959 /* JSMimeTypeArray.h */; };
+ A9D247FE0D757E6900FDF959 /* JSDOMPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */; };
+ A9D247FF0D757E6900FDF959 /* JSDOMPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */; };
+ A9D248000D757E6900FDF959 /* JSDOMPluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */; };
+ A9D248010D757E6900FDF959 /* JSDOMPluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */; };
+ A9D248060D757E7D00FDF959 /* JSDOMMimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */; };
+ A9D248070D757E7D00FDF959 /* JSDOMMimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */; };
+ A9D248080D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */; };
+ A9D248090D757E7D00FDF959 /* JSDOMMimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */; };
AA0972CC0B6947A800A705E9 /* SVGInlineTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA0972CA0B6947A800A705E9 /* SVGInlineTextBox.cpp */; };
AA0972CD0B6947A800A705E9 /* SVGInlineTextBox.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0972CB0B6947A800A705E9 /* SVGInlineTextBox.h */; };
AA21ECCA0ABF0FBA002B834C /* CSSCursorImageValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA0978ED0ABAA6E100874480 /* CSSCursorImageValue.cpp */; };
@@ -4301,18 +4317,12 @@
B5C1123B102B6C4600096578 /* SQLTransactionCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5C11239102B6C4600096578 /* SQLTransactionCoordinator.cpp */; };
B5C1123C102B6C4600096578 /* SQLTransactionCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C1123A102B6C4600096578 /* SQLTransactionCoordinator.h */; };
B5D3601A112F8B560048DEA8 /* DatabaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D36019112F8B560048DEA8 /* DatabaseCallback.h */; };
- B627FB2D11AD743500E97B72 /* IDBDatabaseImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C50AD2A911AC1631008CF2FB /* IDBDatabaseImpl.cpp */; };
- B6693EEC11AD63E6003F2770 /* IDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = B6693EE811AD63E6003F2770 /* IDBObjectStore.h */; };
- B6693EED11AD63E6003F2770 /* IDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6693EE911AD63E6003F2770 /* IDBObjectStoreRequest.cpp */; };
- B6693EEE11AD63E6003F2770 /* IDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B6693EEA11AD63E6003F2770 /* IDBObjectStoreRequest.h */; };
- B6693EF211AD6486003F2770 /* JSIDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6693EF011AD6486003F2770 /* JSIDBObjectStoreRequest.cpp */; };
- B6693EF311AD6486003F2770 /* JSIDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B6693EF111AD6486003F2770 /* JSIDBObjectStoreRequest.h */; };
- B6B0540911B68F10002564C5 /* IDBObjectStoreImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6B0540711B68F10002564C5 /* IDBObjectStoreImpl.cpp */; };
- B6B0540A11B68F10002564C5 /* IDBObjectStoreImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B0540811B68F10002564C5 /* IDBObjectStoreImpl.h */; };
B71FE6DF11091CB300DAEF77 /* PrintContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B776D43A1104525D00BEB0EC /* PrintContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
B734B181119B9911006587BD /* FontTranscoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B734B180119B9911006587BD /* FontTranscoder.cpp */; };
B734B183119B991D006587BD /* FontTranscoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B734B182119B991D006587BD /* FontTranscoder.h */; };
B776D43D1104527500BEB0EC /* PrintContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B776D43C1104527500BEB0EC /* PrintContext.cpp */; };
+ B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */; };
+ B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */; settings = {ATTRIBUTES = (); }; };
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 */; };
@@ -4661,6 +4671,11 @@
BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA846D40DC67A350026C309 /* RenderReplica.cpp */; };
BCA846D70DC67A350026C309 /* RenderReplica.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA846D50DC67A350026C309 /* RenderReplica.h */; };
BCA85A100C3AEAF4006F8308 /* DOMSVGNumberInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA85A0F0C3AEAF4006F8308 /* DOMSVGNumberInternal.h */; };
+ BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA8C81C11E3D36900812FB7 /* BackForwardController.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ BCA8C81F11E3D36900812FB7 /* BackForwardController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */; };
+ BCA8C83111E3D53200812FB7 /* BackForwardControllerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA8C83011E3D53200812FB7 /* BackForwardControllerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ BCA8CA5F11E4E6D100812FB7 /* BackForwardListImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */; };
+ BCA8CA6011E4E6D100812FB7 /* BackForwardListImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
BCAA90C30A7EBA60008B1229 /* Scrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */; };
BCACF3BC1072921A00C0C8A3 /* UserContentURLPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */; };
BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -4862,63 +4877,85 @@
C5137CF311A58378004ADB99 /* JSDOMStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = C5137CF111A58378004ADB99 /* JSDOMStringList.h */; };
C5160EEA1004543A00A7CEE2 /* StorageAreaImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5160EE81004543A00A7CEE2 /* StorageAreaImpl.cpp */; };
C5160EEB1004543A00A7CEE2 /* StorageAreaImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C5160EE91004543A00A7CEE2 /* StorageAreaImpl.h */; };
- C5198F4C1192ECFD002B74A6 /* IDBCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F381192ECFD002B74A6 /* IDBCallbacks.h */; };
- C5198F4E1192ECFD002B74A6 /* IDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F3A1192ECFD002B74A6 /* IDBDatabase.h */; };
- C5198F4F1192ECFD002B74A6 /* IDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F3B1192ECFD002B74A6 /* IDBDatabaseError.h */; };
- C5198F511192ECFD002B74A6 /* IDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F3D1192ECFD002B74A6 /* IDBDatabaseException.h */; };
- C5198F531192ECFD002B74A6 /* IDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5198F3F1192ECFD002B74A6 /* IDBDatabaseRequest.cpp */; };
- C5198F541192ECFD002B74A6 /* IDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F401192ECFD002B74A6 /* IDBDatabaseRequest.h */; };
- C5198F561192ECFD002B74A6 /* IDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5198F421192ECFD002B74A6 /* IDBRequest.cpp */; };
- C5198F571192ECFD002B74A6 /* IDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F431192ECFD002B74A6 /* IDBRequest.h */; };
- C5198F591192ECFD002B74A6 /* IndexedDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5198F451192ECFD002B74A6 /* IndexedDatabase.cpp */; };
- C5198F5A1192ECFD002B74A6 /* IndexedDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F461192ECFD002B74A6 /* IndexedDatabase.h */; };
- C5198F5B1192ECFD002B74A6 /* IndexedDatabaseImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5198F471192ECFD002B74A6 /* IndexedDatabaseImpl.cpp */; };
- C5198F5C1192ECFD002B74A6 /* IndexedDatabaseImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F481192ECFD002B74A6 /* IndexedDatabaseImpl.h */; };
- C5198F5D1192ECFD002B74A6 /* IndexedDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5198F491192ECFD002B74A6 /* IndexedDatabaseRequest.cpp */; };
- C5198F5E1192ECFD002B74A6 /* IndexedDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5198F4A1192ECFD002B74A6 /* IndexedDatabaseRequest.h */; };
- C51DA9A511AEF2C1009799C5 /* IDBIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = C51DA99F11AEF2C1009799C5 /* IDBIndex.h */; };
- C51DA9A611AEF2C1009799C5 /* IDBIndexImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C51DA9A011AEF2C1009799C5 /* IDBIndexImpl.cpp */; };
- C51DA9A711AEF2C1009799C5 /* IDBIndexImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C51DA9A111AEF2C1009799C5 /* IDBIndexImpl.h */; };
- C51DA9A811AEF2C1009799C5 /* IDBIndexRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C51DA9A211AEF2C1009799C5 /* IDBIndexRequest.cpp */; };
- C51DA9A911AEF2C1009799C5 /* IDBIndexRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C51DA9A311AEF2C1009799C5 /* IDBIndexRequest.h */; };
C544274B11A57E7A0063A749 /* DOMStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = C544274911A57E7A0063A749 /* DOMStringList.h */; };
C55610F111A704EB00B82D27 /* DOMStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55610F011A704EB00B82D27 /* DOMStringList.cpp */; };
C55E38BF10040D5D00A56BDB /* StorageNamespaceImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */; };
C55E38C010040D5D00A56BDB /* StorageNamespaceImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */; };
- C56C914E119D849800DE4CD9 /* JSIDBAnyCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C914D119D849800DE4CD9 /* JSIDBAnyCustom.cpp */; };
- C56C9152119D84CB00DE4CD9 /* IDBAny.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C914F119D84CB00DE4CD9 /* IDBAny.cpp */; };
- C56C9153119D84CB00DE4CD9 /* IDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C9150119D84CB00DE4CD9 /* IDBAny.h */; };
- C56C915F119D84E600DE4CD9 /* IDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C9159119D84E600DE4CD9 /* IDBErrorEvent.cpp */; };
- C56C9160119D84E600DE4CD9 /* IDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C915A119D84E600DE4CD9 /* IDBErrorEvent.h */; };
- C56C9162119D84E600DE4CD9 /* IDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C915C119D84E600DE4CD9 /* IDBEvent.cpp */; };
- C56C9163119D84E600DE4CD9 /* IDBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C915D119D84E600DE4CD9 /* IDBEvent.h */; };
- C56C9168119D84FF00DE4CD9 /* IDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C9165119D84FF00DE4CD9 /* IDBSuccessEvent.cpp */; };
- C56C9169119D84FF00DE4CD9 /* IDBSuccessEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C9166119D84FF00DE4CD9 /* IDBSuccessEvent.h */; };
- C56C919A119D915300DE4CD9 /* JSIDBAny.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C9198119D915300DE4CD9 /* JSIDBAny.cpp */; };
- C56C919B119D915300DE4CD9 /* JSIDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C9199119D915300DE4CD9 /* JSIDBAny.h */; };
- C56C91A0119D918100DE4CD9 /* JSIDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C919C119D918100DE4CD9 /* JSIDBErrorEvent.cpp */; };
- C56C91A1119D918100DE4CD9 /* JSIDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C919D119D918100DE4CD9 /* JSIDBErrorEvent.h */; };
- C56C91A2119D918100DE4CD9 /* JSIDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C919E119D918100DE4CD9 /* JSIDBEvent.cpp */; };
- C56C91A3119D918100DE4CD9 /* JSIDBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C919F119D918100DE4CD9 /* JSIDBEvent.h */; };
- C56C91A6119D918700DE4CD9 /* JSIDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C56C91A4119D918700DE4CD9 /* JSIDBSuccessEvent.cpp */; };
- C56C91A7119D918700DE4CD9 /* JSIDBSuccessEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C56C91A5119D918700DE4CD9 /* JSIDBSuccessEvent.h */; };
- C5BBC9D011AEF838007C2BFE /* JSIDBIndexRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5BBC9CE11AEF838007C2BFE /* JSIDBIndexRequest.cpp */; };
- C5BBC9D111AEF838007C2BFE /* JSIDBIndexRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BBC9CF11AEF838007C2BFE /* JSIDBIndexRequest.h */; };
+ C585A65E11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A65C11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp */; };
+ C585A65F11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A65D11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp */; };
+ C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */; };
+ C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */; };
+ C585A67C11D4FB08004C3E4B /* JSIDBAny.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66411D4FB07004C3E4B /* JSIDBAny.cpp */; };
+ C585A67D11D4FB08004C3E4B /* JSIDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66511D4FB07004C3E4B /* JSIDBAny.h */; };
+ C585A67E11D4FB08004C3E4B /* JSIDBDatabaseError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66611D4FB07004C3E4B /* JSIDBDatabaseError.cpp */; };
+ C585A67F11D4FB08004C3E4B /* JSIDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */; };
+ C585A68011D4FB08004C3E4B /* JSIDBDatabaseException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */; };
+ C585A68111D4FB08004C3E4B /* JSIDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */; };
+ C585A68211D4FB08004C3E4B /* JSIDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */; };
+ C585A68311D4FB08004C3E4B /* JSIDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */; };
+ C585A68411D4FB08004C3E4B /* JSIDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */; };
+ C585A68511D4FB08004C3E4B /* JSIDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */; };
+ C585A68611D4FB08004C3E4B /* JSIDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */; };
+ C585A68711D4FB08004C3E4B /* JSIDBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66F11D4FB07004C3E4B /* JSIDBEvent.h */; };
+ C585A68811D4FB08004C3E4B /* JSIDBIndexRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67011D4FB07004C3E4B /* JSIDBIndexRequest.cpp */; };
+ C585A68911D4FB08004C3E4B /* JSIDBIndexRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67111D4FB07004C3E4B /* JSIDBIndexRequest.h */; };
+ C585A68A11D4FB08004C3E4B /* JSIDBKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67211D4FB07004C3E4B /* JSIDBKey.cpp */; };
+ C585A68B11D4FB08004C3E4B /* JSIDBKey.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67311D4FB07004C3E4B /* JSIDBKey.h */; };
+ C585A68C11D4FB08004C3E4B /* JSIDBKeyRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */; };
+ C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */; };
+ C585A68E11D4FB08004C3E4B /* JSIDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */; };
+ C585A68F11D4FB08004C3E4B /* JSIDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */; };
+ C585A69011D4FB08004C3E4B /* JSIDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */; };
+ C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67911D4FB07004C3E4B /* JSIDBRequest.h */; };
+ C585A69211D4FB08004C3E4B /* JSIDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */; };
+ C585A69311D4FB08004C3E4B /* JSIDBSuccessEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67B11D4FB07004C3E4B /* JSIDBSuccessEvent.h */; };
+ C585A69611D4FB13004C3E4B /* JSIndexedDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A69411D4FB13004C3E4B /* JSIndexedDatabaseRequest.cpp */; };
+ C585A69711D4FB13004C3E4B /* JSIndexedDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69511D4FB13004C3E4B /* JSIndexedDatabaseRequest.h */; };
+ C585A6CC11D4FB3D004C3E4B /* IDBAny.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A69811D4FB3D004C3E4B /* IDBAny.cpp */; };
+ C585A6CD11D4FB3D004C3E4B /* IDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69911D4FB3D004C3E4B /* IDBAny.h */; };
+ C585A6CF11D4FB3D004C3E4B /* IDBCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */; };
+ C585A6D011D4FB3D004C3E4B /* IDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */; };
+ C585A6D111D4FB3D004C3E4B /* IDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */; };
+ C585A6D311D4FB3D004C3E4B /* IDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */; };
+ C585A6D511D4FB3D004C3E4B /* IDBDatabaseImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */; };
+ C585A6D611D4FB3D004C3E4B /* IDBDatabaseImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */; };
+ C585A6D711D4FB3D004C3E4B /* IDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */; };
+ C585A6D811D4FB3D004C3E4B /* IDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */; };
+ C585A6DA11D4FB3D004C3E4B /* IDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */; };
+ C585A6DB11D4FB3D004C3E4B /* IDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */; };
+ C585A6DD11D4FB3D004C3E4B /* IDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A911D4FB3D004C3E4B /* IDBEvent.cpp */; };
+ C585A6DE11D4FB3D004C3E4B /* IDBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6AA11D4FB3D004C3E4B /* IDBEvent.h */; };
+ C585A6E011D4FB3D004C3E4B /* IDBIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6AC11D4FB3D004C3E4B /* IDBIndex.h */; };
+ C585A6E111D4FB3D004C3E4B /* IDBIndexImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6AD11D4FB3D004C3E4B /* IDBIndexImpl.cpp */; };
+ C585A6E211D4FB3D004C3E4B /* IDBIndexImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6AE11D4FB3D004C3E4B /* IDBIndexImpl.h */; };
+ C585A6E311D4FB3D004C3E4B /* IDBIndexRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6AF11D4FB3D004C3E4B /* IDBIndexRequest.cpp */; };
+ C585A6E411D4FB3D004C3E4B /* IDBIndexRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B011D4FB3D004C3E4B /* IDBIndexRequest.h */; };
+ C585A6E611D4FB3D004C3E4B /* IDBKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6B211D4FB3D004C3E4B /* IDBKey.cpp */; };
+ C585A6E711D4FB3D004C3E4B /* IDBKey.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B311D4FB3D004C3E4B /* IDBKey.h */; };
+ C585A6E911D4FB3D004C3E4B /* IDBKeyRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6B511D4FB3D004C3E4B /* IDBKeyRange.cpp */; };
+ C585A6EA11D4FB3D004C3E4B /* IDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */; };
+ C585A6EC11D4FB3D004C3E4B /* IDBKeyTree.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */; };
+ C585A6ED11D4FB3D004C3E4B /* IDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */; };
+ C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */; };
+ C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */; };
+ C585A6F011D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */; };
+ C585A6F111D4FB3D004C3E4B /* IDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */; };
+ C585A6F311D4FB3D004C3E4B /* IDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */; };
+ C585A6F411D4FB3D004C3E4B /* IDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6C011D4FB3D004C3E4B /* IDBRequest.h */; };
+ C585A6F611D4FB3D004C3E4B /* IDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6C211D4FB3D004C3E4B /* IDBSuccessEvent.cpp */; };
+ C585A6F711D4FB3D004C3E4B /* IDBSuccessEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6C311D4FB3D004C3E4B /* IDBSuccessEvent.h */; };
+ C585A6F911D4FB3D004C3E4B /* IndexedDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6C511D4FB3D004C3E4B /* IndexedDatabase.cpp */; };
+ C585A6FA11D4FB3D004C3E4B /* IndexedDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6C611D4FB3D004C3E4B /* IndexedDatabase.h */; };
+ C585A6FB11D4FB3D004C3E4B /* IndexedDatabaseImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6C711D4FB3D004C3E4B /* IndexedDatabaseImpl.cpp */; };
+ C585A6FC11D4FB3D004C3E4B /* IndexedDatabaseImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6C811D4FB3D004C3E4B /* IndexedDatabaseImpl.h */; };
+ C585A6FD11D4FB3D004C3E4B /* IndexedDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6C911D4FB3D004C3E4B /* IndexedDatabaseRequest.cpp */; };
+ C585A6FE11D4FB3D004C3E4B /* IndexedDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6CA11D4FB3D004C3E4B /* IndexedDatabaseRequest.h */; };
C5D4AA7A116BAFB60069CA93 /* GlyphMetricsMap.h in Headers */ = {isa = PBXBuildFile; fileRef = C5D4AA78116BAFB60069CA93 /* GlyphMetricsMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
C5E9B67710697E1300C7BB1A /* StorageEventDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5E9B67610697E1300C7BB1A /* StorageEventDispatcher.cpp */; };
C5EBDD84105EDDEC0056816F /* StorageEventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C5EBDD81105EDDEC0056816F /* StorageEventDispatcher.h */; };
- C5F4F406119306AC00FDFADD /* JSIDBDatabaseError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5F4F3FE119306AC00FDFADD /* JSIDBDatabaseError.cpp */; };
- C5F4F407119306AC00FDFADD /* JSIDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F4F3FF119306AC00FDFADD /* JSIDBDatabaseError.h */; };
- C5F4F408119306AC00FDFADD /* JSIDBDatabaseException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5F4F400119306AC00FDFADD /* JSIDBDatabaseException.cpp */; };
- C5F4F409119306AC00FDFADD /* JSIDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F4F401119306AC00FDFADD /* JSIDBDatabaseException.h */; };
- C5F4F40A119306AC00FDFADD /* JSIDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5F4F402119306AC00FDFADD /* JSIDBDatabaseRequest.cpp */; };
- C5F4F40B119306AC00FDFADD /* JSIDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F4F403119306AC00FDFADD /* JSIDBDatabaseRequest.h */; };
- C5F4F40C119306AC00FDFADD /* JSIDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5F4F404119306AC00FDFADD /* JSIDBRequest.cpp */; };
- C5F4F40D119306AC00FDFADD /* JSIDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F4F405119306AC00FDFADD /* JSIDBRequest.h */; };
- C5F4F410119306C000FDFADD /* JSIndexedDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5F4F40E119306C000FDFADD /* JSIndexedDatabaseRequest.cpp */; };
- C5F4F411119306C000FDFADD /* JSIndexedDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F4F40F119306C000FDFADD /* JSIndexedDatabaseRequest.h */; };
C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */; };
C6D74AE409AA290A000B0A52 /* ModifySelectionListLevel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */; };
+ CE02F0C411E83ADD00C6684A /* ScriptControllerBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */ = {isa = PBXBuildFile; fileRef = CE172E001136E8CE0062A533 /* ZoomMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
CE4C00E410F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE4C00E310F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp */; };
CE4C00E610F6F7C100CA38F5 /* HTMLNoScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = CE4C00E510F6F7C100CA38F5 /* HTMLNoScriptElement.h */; };
@@ -5179,6 +5216,20 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 5D87BB6A11E3EBD200702B6F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5D87BB6411E3EBC100702B6F;
+ remoteInfo = "WebCoreExportFileGenerator Generator";
+ };
+ 5D87BB8E11E3EE2B00702B6F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5D87BB4E11E3EAEB00702B6F;
+ remoteInfo = WebCoreExportFileGenerator;
+ };
DD041FF009D9E3250010AF2A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -5613,6 +5664,7 @@
/* Begin PBXFileReference section */
00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginAccessEntry.cpp; sourceTree = "<group>"; };
00146289103CD1DE000B20DB /* OriginAccessEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginAccessEntry.h; sourceTree = "<group>"; };
+ 003F1FE911E6AB43008258D9 /* UserContentTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentTypes.h; sourceTree = "<group>"; };
06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuItem.h; sourceTree = "<group>"; };
06027CB20B1CC03D00884B2D /* ContextMenuItemMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ContextMenuItemMac.mm; sourceTree = "<group>"; };
062287830B4DB322000C34DF /* FocusDirection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FocusDirection.h; sourceTree = "<group>"; };
@@ -5772,8 +5824,6 @@
0B90561D0F257E930095FF6A /* ThreadableLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableLoader.cpp; sourceTree = "<group>"; };
0B9056F60F2685F30095FF6A /* WorkerThreadableLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerThreadableLoader.cpp; sourceTree = "<group>"; };
0B9056F70F2685F30095FF6A /* WorkerThreadableLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerThreadableLoader.h; sourceTree = "<group>"; };
- 0BC2C7751134A8FC000B2F61 /* CanvasSurface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasSurface.cpp; sourceTree = "<group>"; };
- 0BC2C7761134A8FC000B2F61 /* CanvasSurface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasSurface.h; sourceTree = "<group>"; };
0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLineBoxList.h; sourceTree = "<group>"; };
0C3F1F5710C8871200D72CE1 /* WebGLUniformLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLUniformLocation.cpp; path = canvas/WebGLUniformLocation.cpp; sourceTree = "<group>"; };
0C3F1F5810C8871200D72CE1 /* WebGLUniformLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLUniformLocation.h; path = canvas/WebGLUniformLocation.h; sourceTree = "<group>"; };
@@ -5784,7 +5834,6 @@
0F15DA890F3AAEE70000CE47 /* AnimationControllerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationControllerPrivate.h; path = animation/AnimationControllerPrivate.h; sourceTree = "<group>"; };
0F500AAE0F54DB1B00EEF928 /* TransformState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformState.h; sourceTree = "<group>"; };
0F500AB00F54DB3100EEF928 /* TransformState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformState.cpp; sourceTree = "<group>"; };
- 0F5263E511DC136E0006D33C /* WebCore.AcceleratedCompositing.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.AcceleratedCompositing.exp; sourceTree = "<group>"; };
0F56028D0E4B76580065B038 /* RenderMarquee.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMarquee.h; sourceTree = "<group>"; };
0F56028E0E4B76580065B038 /* RenderMarquee.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMarquee.cpp; sourceTree = "<group>"; };
0F580B030F12A2540051D689 /* GraphicsLayerCA.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsLayerCA.mm; sourceTree = "<group>"; };
@@ -5800,7 +5849,6 @@
0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderEmbeddedObject.h; sourceTree = "<group>"; };
0F6ECD430F252F3700BDE271 /* CSSPropertyLonghand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSPropertyLonghand.h; sourceTree = "<group>"; };
0F6ECD440F252F3700BDE271 /* CSSPropertyLonghand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPropertyLonghand.cpp; sourceTree = "<group>"; };
- 0F9C6F4B1073EF0400DED9BF /* WebCore.3DRendering.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.3DRendering.exp; sourceTree = "<group>"; };
0FC705200EB1815600B90AD8 /* AtomicStringHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtomicStringHash.h; sourceTree = "<group>"; };
0FCF33230F2B9715004B6795 /* ColorCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorCG.cpp; sourceTree = "<group>"; };
0FCF33280F2B9A25004B6795 /* WebTiledLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebTiledLayer.mm; sourceTree = "<group>"; };
@@ -6229,7 +6277,6 @@
24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheHost.h; sourceTree = "<group>"; };
2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserGestureIndicator.cpp; sourceTree = "<group>"; };
2542F4D91166C25A00E89A86 /* UserGestureIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserGestureIndicator.h; sourceTree = "<group>"; };
- 271245D311890AB70083E852 /* WebCore.ProtectionSpaceAuthCallback.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.ProtectionSpaceAuthCallback.exp; sourceTree = "<group>"; };
29A812080FBB9C1D00510293 /* AccessibilityRenderObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityRenderObject.cpp; sourceTree = "<group>"; };
29A812090FBB9C1D00510293 /* AccessibilityTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTable.cpp; sourceTree = "<group>"; };
29A8120A0FBB9C1D00510293 /* AccessibilityARIAGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityARIAGrid.cpp; sourceTree = "<group>"; };
@@ -6495,16 +6542,6 @@
448A29BE0A46D9CB0030759F /* JSHTMLOptionsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptionsCollection.cpp; sourceTree = "<group>"; };
448AD27A0A4813790023D179 /* JSHTMLOptionsCollectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptionsCollectionCustom.cpp; sourceTree = "<group>"; };
449098B10F8F82520076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = "<group>"; };
- 449195940FBE17D700D9F824 /* WebCore.VideoProxy.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.VideoProxy.exp; sourceTree = "<group>"; };
- 449195950FBE17D700D9F824 /* WebCore.Tiger.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.Tiger.exp; sourceTree = "<group>"; };
- 449195960FBE17D700D9F824 /* WebCore.SVG.ForeignObject.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.SVG.ForeignObject.exp; sourceTree = "<group>"; };
- 449195970FBE17D700D9F824 /* WebCore.SVG.Filters.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.SVG.Filters.exp; sourceTree = "<group>"; };
- 449195980FBE17D700D9F824 /* WebCore.SVG.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.SVG.exp; sourceTree = "<group>"; };
- 449195990FBE17D700D9F824 /* WebCore.SVG.Animation.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.SVG.Animation.exp; sourceTree = "<group>"; };
- 4491959A0FBE17D700D9F824 /* WebCore.NPAPI.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.NPAPI.exp; sourceTree = "<group>"; };
- 4491959B0FBE17D700D9F824 /* WebCore.PluginHostProcess.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.PluginHostProcess.exp; sourceTree = "<group>"; };
- 4491959C0FBE17D700D9F824 /* WebCore.JNI.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.JNI.exp; sourceTree = "<group>"; };
- 4491959D0FBE17D700D9F824 /* WebCore.DashboardSupport.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.DashboardSupport.exp; sourceTree = "<group>"; };
449B19F30FA72ECE0015CA4A /* HTMLParserQuirks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLParserQuirks.h; sourceTree = "<group>"; };
4614A1FD0B23A8D600446E1C /* copyCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = copyCursor.png; sourceTree = "<group>"; };
464EA2710B8A350B00A8E6E3 /* crossHairCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crossHairCursor.png; sourceTree = "<group>"; };
@@ -6714,6 +6751,8 @@
4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBehaviorTypes.h; sourceTree = "<group>"; };
4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorValues.cpp; sourceTree = "<group>"; };
4F3289B411A42AAB005ABE7E /* InspectorValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorValues.h; sourceTree = "<group>"; };
+ 4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteInspectorFrontend2.cpp; sourceTree = "<group>"; };
+ 4F4F5FFC11CBD30100A186BF /* RemoteInspectorFrontend2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteInspectorFrontend2.h; sourceTree = "<group>"; };
4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptGCEvent.cpp; sourceTree = "<group>"; };
4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptGCEvent.h; sourceTree = "<group>"; };
510184670B08602A004A825F /* CachedPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedPage.h; sourceTree = "<group>"; };
@@ -6799,7 +6838,6 @@
51721FD111D27EF200638B42 /* JSBeforeProcessEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBeforeProcessEvent.h; sourceTree = "<group>"; };
5172204A11D2960500638B42 /* BeforeProcessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BeforeProcessEvent.cpp; sourceTree = "<group>"; };
51741D0B0B07259A00ED442C /* BackForwardList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardList.h; sourceTree = "<group>"; };
- 51741D0C0B07259A00ED442C /* BackForwardList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackForwardList.cpp; sourceTree = "<group>"; };
51741D0D0B07259A00ED442C /* HistoryItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HistoryItem.h; sourceTree = "<group>"; };
51741D0E0B07259A00ED442C /* HistoryItem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryItem.cpp; sourceTree = "<group>"; };
5174E20810A1F44F00F95E6F /* PopStateEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopStateEvent.h; sourceTree = "<group>"; };
@@ -6892,8 +6930,8 @@
59A85EAA119D7B6E00DEF1EF /* DeviceOrientationEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DeviceOrientationEvent.idl; sourceTree = "<group>"; };
59A86005119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDeviceOrientationEvent.cpp; sourceTree = "<group>"; };
59A86007119DAFA100DEF1EF /* JSDeviceOrientationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDeviceOrientationEvent.h; sourceTree = "<group>"; };
- 59A8F1D311A69508001AC34A /* DeviceOrientation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceOrientation.cpp; sourceTree = "<group>"; };
- 59A8F1D511A69513001AC34A /* DeviceOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientation.h; sourceTree = "<group>"; };
+ 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceOrientationController.cpp; sourceTree = "<group>"; };
+ 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationController.h; sourceTree = "<group>"; };
59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationClient.h; sourceTree = "<group>"; };
59A9E7AF1104758800DFB4C1 /* JavaInstanceJSC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JavaInstanceJSC.cpp; path = jsc/JavaInstanceJSC.cpp; sourceTree = "<group>"; };
59A9E7B11104759400DFB4C1 /* JavaInstanceJSC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JavaInstanceJSC.h; path = jsc/JavaInstanceJSC.h; sourceTree = "<group>"; };
@@ -6910,6 +6948,9 @@
59EE12311106082900885116 /* JNIUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JNIUtility.h; sourceTree = "<group>"; };
5D15E3A90F9E6AC1009E0E3F /* XMLDocumentParserScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLDocumentParserScope.cpp; sourceTree = "<group>"; };
5D15E3AA0F9E6AC1009E0E3F /* XMLDocumentParserScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDocumentParserScope.h; sourceTree = "<group>"; };
+ 5D4B8C5211E52C8B00BBB62F /* WebCore.exp.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebCore.exp.in; sourceTree = "<group>"; };
+ 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WebCoreExportFileGenerator; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExportFileGenerator.cpp; path = DerivedSources/WebCore/ExportFileGenerator.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
5D925B650F64D4DD00B847F0 /* ScrollBehavior.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollBehavior.cpp; sourceTree = "<group>"; };
5D925B660F64D4DD00B847F0 /* ScrollBehavior.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollBehavior.h; sourceTree = "<group>"; };
5DA5E0FA102B953800088CF9 /* JSWebSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebSocket.cpp; sourceTree = "<group>"; };
@@ -6927,7 +6968,6 @@
63189AE20E83A33300012E41 /* NodeRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRareData.h; sourceTree = "<group>"; };
637B7ADE0E8767B800E32194 /* ElementRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementRareData.h; sourceTree = "<group>"; };
63D7B32C0E78CD3F00F7617C /* NodeRenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRenderStyle.h; sourceTree = "<group>"; };
- 63F371CD100E790000BBA87A /* WebCore.Video.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.Video.exp; sourceTree = "<group>"; };
650F53DB09D15DDA00C9B0C8 /* CSSGrammar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSGrammar.h; sourceTree = "<group>"; };
650FBF270D9AF046008FC292 /* SVGHKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGHKernElement.cpp; sourceTree = "<group>"; };
650FBF280D9AF047008FC292 /* SVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGHKernElement.h; sourceTree = "<group>"; };
@@ -7103,11 +7143,6 @@
7AED3E040FBB1EAA00D2B03C /* InspectorFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontend.h; sourceTree = "<group>"; };
7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptBreakpoint.h; sourceTree = "<group>"; };
7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugListener.h; sourceTree = "<group>"; };
- 816C806611BE887E009A45E9 /* IDBKeyRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBKeyRange.cpp; sourceTree = "<group>"; };
- 816C806711BE887E009A45E9 /* IDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKeyRange.h; sourceTree = "<group>"; };
- 816C80AE11BE990D009A45E9 /* JSIDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKeyRange.h; sourceTree = "<group>"; };
- 816C80B011BE9934009A45E9 /* JSIDBKeyRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBKeyRange.cpp; sourceTree = "<group>"; };
- 81CC114011BEAA9D00D0D856 /* IDBKeyRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBKeyRange.idl; sourceTree = "<group>"; };
82B658971189E39200E052A1 /* InspectorCSSStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSStore.h; sourceTree = "<group>"; };
82B658991189E47600E052A1 /* InspectorCSSStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSStore.cpp; sourceTree = "<group>"; };
841FDC241178C9BE00F8AC9B /* RenderSVGResourceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceFilter.cpp; sourceTree = "<group>"; };
@@ -7979,6 +8014,12 @@
8A844D0111D3C18E0014065C /* Performance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Performance.cpp; sourceTree = "<group>"; };
8A844D0211D3C18E0014065C /* Performance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Performance.h; sourceTree = "<group>"; };
8A844D0311D3C18E0014065C /* Performance.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Performance.idl; sourceTree = "<group>"; };
+ 8A9A586E11E84C35008ACFD1 /* JSNavigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigation.cpp; sourceTree = "<group>"; };
+ 8A9A586F11E84C36008ACFD1 /* JSNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNavigation.h; sourceTree = "<group>"; };
+ 8A9A587211E84C81008ACFD1 /* JSPerformance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPerformance.cpp; sourceTree = "<group>"; };
+ 8A9A587311E84C81008ACFD1 /* JSPerformance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPerformance.h; sourceTree = "<group>"; };
+ 8A9A587611E84C98008ACFD1 /* JSTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTiming.cpp; sourceTree = "<group>"; };
+ 8A9A587711E84C98008ACFD1 /* JSTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTiming.h; sourceTree = "<group>"; };
8AF4E55211DC5A36000ED3DE /* Navigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Navigation.cpp; sourceTree = "<group>"; };
8AF4E55311DC5A36000ED3DE /* Navigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Navigation.h; sourceTree = "<group>"; };
8AF4E55411DC5A36000ED3DE /* Navigation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Navigation.idl; sourceTree = "<group>"; };
@@ -8253,6 +8294,8 @@
97E8B35411A23CE200169409 /* HTMLTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTokenizer.cpp; sourceTree = "<group>"; };
97E8B35511A23CE200169409 /* HTMLTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTokenizer.h; sourceTree = "<group>"; };
97E8B3C211A2890800169409 /* HTMLToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLToken.h; sourceTree = "<group>"; };
+ 97EF560E11E40783007E026F /* HTMLConstructionSite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLConstructionSite.cpp; sourceTree = "<group>"; };
+ 97EF560F11E40783007E026F /* HTMLConstructionSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLConstructionSite.h; sourceTree = "<group>"; };
97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptControllerBase.cpp; sourceTree = "<group>"; };
9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptDebugServer.cpp; sourceTree = "<group>"; };
9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugServer.h; sourceTree = "<group>"; };
@@ -8903,37 +8946,37 @@
A8F5C0B70F9285AC0098E06B /* RenderSVGModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGModelObject.cpp; sourceTree = "<group>"; };
A8FA6E5B0E4CFDED00D5CF49 /* Pattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pattern.h; sourceTree = "<group>"; };
A8FA6E5C0E4CFDED00D5CF49 /* Pattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Pattern.cpp; sourceTree = "<group>"; };
- A9C6E4E10D745E05006442E9 /* MimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MimeType.cpp; sourceTree = "<group>"; };
- A9C6E4E20D745E05006442E9 /* MimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MimeType.h; sourceTree = "<group>"; };
- A9C6E4E50D745E18006442E9 /* MimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MimeTypeArray.cpp; sourceTree = "<group>"; };
- A9C6E4E60D745E18006442E9 /* MimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MimeTypeArray.h; sourceTree = "<group>"; };
- A9C6E4E90D745E2B006442E9 /* Plugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Plugin.cpp; sourceTree = "<group>"; };
- A9C6E4EA0D745E2B006442E9 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Plugin.h; sourceTree = "<group>"; };
- A9C6E4ED0D745E38006442E9 /* PluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PluginArray.cpp; sourceTree = "<group>"; };
- A9C6E4EE0D745E38006442E9 /* PluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginArray.h; sourceTree = "<group>"; };
+ A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMMimeType.cpp; sourceTree = "<group>"; };
+ A9C6E4E20D745E05006442E9 /* DOMMimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMimeType.h; sourceTree = "<group>"; };
+ A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMMimeTypeArray.cpp; sourceTree = "<group>"; };
+ A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMimeTypeArray.h; sourceTree = "<group>"; };
+ A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMPlugin.cpp; sourceTree = "<group>"; };
+ A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMPlugin.h; sourceTree = "<group>"; };
+ A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMPluginArray.cpp; sourceTree = "<group>"; };
+ A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMPluginArray.h; sourceTree = "<group>"; };
A9C6E4F10D745E48006442E9 /* PluginData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PluginData.cpp; sourceTree = "<group>"; };
A9C6E4F20D745E48006442E9 /* PluginData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginData.h; sourceTree = "<group>"; };
A9C6E5A30D746458006442E9 /* Navigator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Navigator.cpp; sourceTree = "<group>"; };
A9C6E5A40D746458006442E9 /* Navigator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Navigator.h; sourceTree = "<group>"; };
- A9C6E6460D7465CA006442E9 /* JSMimeTypeArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMimeTypeArrayCustom.cpp; sourceTree = "<group>"; };
+ A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeTypeArrayCustom.cpp; sourceTree = "<group>"; };
A9C6E6480D7465D8006442E9 /* JSNavigatorCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigatorCustom.cpp; sourceTree = "<group>"; };
- A9C6E64A0D7465E7006442E9 /* JSPluginArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSPluginArrayCustom.cpp; sourceTree = "<group>"; };
- A9C6E64B0D7465E7006442E9 /* JSPluginCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSPluginCustom.cpp; sourceTree = "<group>"; };
+ A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginArrayCustom.cpp; sourceTree = "<group>"; };
+ A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginCustom.cpp; sourceTree = "<group>"; };
A9C6E65D0D746694006442E9 /* Navigator.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Navigator.idl; sourceTree = "<group>"; };
- A9C6E65E0D7466F2006442E9 /* MimeType.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = MimeType.idl; sourceTree = "<group>"; };
- A9C6E65F0D746700006442E9 /* MimeTypeArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = MimeTypeArray.idl; sourceTree = "<group>"; };
- A9C6E6600D74670C006442E9 /* Plugin.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Plugin.idl; sourceTree = "<group>"; };
- A9C6E6610D74671E006442E9 /* PluginArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = PluginArray.idl; sourceTree = "<group>"; };
+ A9C6E65E0D7466F2006442E9 /* DOMMimeType.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMMimeType.idl; sourceTree = "<group>"; };
+ A9C6E65F0D746700006442E9 /* DOMMimeTypeArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMMimeTypeArray.idl; sourceTree = "<group>"; };
+ A9C6E6600D74670C006442E9 /* DOMPlugin.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMPlugin.idl; sourceTree = "<group>"; };
+ A9C6E6610D74671E006442E9 /* DOMPluginArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMPluginArray.idl; sourceTree = "<group>"; };
A9D247F50D757E3300FDF959 /* JSNavigator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigator.cpp; sourceTree = "<group>"; };
A9D247F60D757E3300FDF959 /* JSNavigator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNavigator.h; sourceTree = "<group>"; };
- A9D247FA0D757E6900FDF959 /* JSPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSPlugin.cpp; sourceTree = "<group>"; };
- A9D247FB0D757E6900FDF959 /* JSPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSPlugin.h; sourceTree = "<group>"; };
- A9D247FC0D757E6900FDF959 /* JSPluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSPluginArray.cpp; sourceTree = "<group>"; };
- A9D247FD0D757E6900FDF959 /* JSPluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSPluginArray.h; sourceTree = "<group>"; };
- A9D248020D757E7D00FDF959 /* JSMimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMimeType.cpp; sourceTree = "<group>"; };
- A9D248030D757E7D00FDF959 /* JSMimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMimeType.h; sourceTree = "<group>"; };
- A9D248040D757E7D00FDF959 /* JSMimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMimeTypeArray.cpp; sourceTree = "<group>"; };
- A9D248050D757E7D00FDF959 /* JSMimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMimeTypeArray.h; sourceTree = "<group>"; };
+ A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPlugin.cpp; sourceTree = "<group>"; };
+ A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMPlugin.h; sourceTree = "<group>"; };
+ A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginArray.cpp; sourceTree = "<group>"; };
+ A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMPluginArray.h; sourceTree = "<group>"; };
+ A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeType.cpp; sourceTree = "<group>"; };
+ A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMMimeType.h; sourceTree = "<group>"; };
+ A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeTypeArray.cpp; sourceTree = "<group>"; };
+ A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMMimeTypeArray.h; sourceTree = "<group>"; };
AA0972CA0B6947A800A705E9 /* SVGInlineTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGInlineTextBox.cpp; sourceTree = "<group>"; };
AA0972CB0B6947A800A705E9 /* SVGInlineTextBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGInlineTextBox.h; sourceTree = "<group>"; };
AA0978ED0ABAA6E100874480 /* CSSCursorImageValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCursorImageValue.cpp; sourceTree = "<group>"; };
@@ -9867,18 +9910,12 @@
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>"; };
B5D36019112F8B560048DEA8 /* DatabaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseCallback.h; sourceTree = "<group>"; };
- B6693EE811AD63E6003F2770 /* IDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStore.h; sourceTree = "<group>"; };
- B6693EE911AD63E6003F2770 /* IDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
- B6693EEA11AD63E6003F2770 /* IDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreRequest.h; sourceTree = "<group>"; };
- B6693EEF11AD63F6003F2770 /* IDBObjectStoreRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBObjectStoreRequest.idl; sourceTree = "<group>"; };
- B6693EF011AD6486003F2770 /* JSIDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
- B6693EF111AD6486003F2770 /* JSIDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBObjectStoreRequest.h; sourceTree = "<group>"; };
- B6B0540711B68F10002564C5 /* IDBObjectStoreImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreImpl.cpp; sourceTree = "<group>"; };
- B6B0540811B68F10002564C5 /* IDBObjectStoreImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreImpl.h; sourceTree = "<group>"; };
B734B180119B9911006587BD /* FontTranscoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FontTranscoder.cpp; path = transcoder/FontTranscoder.cpp; sourceTree = "<group>"; };
B734B182119B991D006587BD /* FontTranscoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FontTranscoder.h; path = transcoder/FontTranscoder.h; sourceTree = "<group>"; };
B776D43A1104525D00BEB0EC /* PrintContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintContext.h; sourceTree = "<group>"; };
B776D43C1104527500BEB0EC /* PrintContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrintContext.cpp; sourceTree = "<group>"; };
+ B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorApplicationCacheAgent.cpp; sourceTree = "<group>"; };
+ B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorApplicationCacheAgent.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>"; };
@@ -10033,7 +10070,6 @@
BC56CB1E10D5AC8000A77C64 /* GeolocationControllerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationControllerClient.h; sourceTree = "<group>"; };
BC56CB1F10D5AC8000A77C64 /* GeolocationError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationError.h; sourceTree = "<group>"; };
BC56CB2010D5AC8000A77C64 /* GeolocationPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationPosition.h; sourceTree = "<group>"; };
- BC56CCDF10D72BD800A77C64 /* WebCore.ClientBasedGeolocation.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.ClientBasedGeolocation.exp; sourceTree = "<group>"; };
BC5823F40C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLElementCustom.cpp; sourceTree = "<group>"; };
BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleDeclarationCustom.cpp; sourceTree = "<group>"; };
BC588AEF0BFA6CF900EE679E /* HTMLParserErrorCodes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLParserErrorCodes.h; sourceTree = "<group>"; };
@@ -10253,6 +10289,11 @@
BCA846D40DC67A350026C309 /* RenderReplica.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderReplica.cpp; sourceTree = "<group>"; };
BCA846D50DC67A350026C309 /* RenderReplica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderReplica.h; sourceTree = "<group>"; };
BCA85A0F0C3AEAF4006F8308 /* DOMSVGNumberInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGNumberInternal.h; sourceTree = "<group>"; };
+ BCA8C81C11E3D36900812FB7 /* BackForwardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardController.h; sourceTree = "<group>"; };
+ BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackForwardController.cpp; sourceTree = "<group>"; };
+ BCA8C83011E3D53200812FB7 /* BackForwardControllerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardControllerClient.h; sourceTree = "<group>"; };
+ BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackForwardListImpl.cpp; sourceTree = "<group>"; };
+ BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardListImpl.h; sourceTree = "<group>"; };
BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Scrollbar.cpp; path = platform/Scrollbar.cpp; sourceTree = SOURCE_ROOT; };
BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserContentURLPattern.cpp; sourceTree = "<group>"; };
BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentURLPattern.h; sourceTree = "<group>"; };
@@ -10455,8 +10496,6 @@
C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSConsoleCustom.cpp; sourceTree = "<group>"; };
C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextEncodingDetectorICU.cpp; sourceTree = "<group>"; };
C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEncodingDetector.h; sourceTree = "<group>"; };
- C50AD2A911AC1631008CF2FB /* IDBDatabaseImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseImpl.cpp; sourceTree = "<group>"; };
- C50AD2AA11AC1631008CF2FB /* IDBDatabaseImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseImpl.h; sourceTree = "<group>"; };
C50D0E800FF4272900AC2644 /* StorageNamespace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespace.cpp; sourceTree = "<group>"; };
C50D0E810FF4272900AC2644 /* StorageNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespace.h; sourceTree = "<group>"; };
C5102D920FD9AA2D00FAFF04 /* StorageSyncManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageSyncManager.h; sourceTree = "<group>"; };
@@ -10467,74 +10506,99 @@
C5137CF111A58378004ADB99 /* JSDOMStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMStringList.h; sourceTree = "<group>"; };
C5160EE81004543A00A7CEE2 /* StorageAreaImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageAreaImpl.cpp; sourceTree = "<group>"; };
C5160EE91004543A00A7CEE2 /* StorageAreaImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageAreaImpl.h; sourceTree = "<group>"; };
- C5198F381192ECFD002B74A6 /* IDBCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCallbacks.h; sourceTree = "<group>"; };
- C5198F3A1192ECFD002B74A6 /* IDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabase.h; sourceTree = "<group>"; };
- C5198F3B1192ECFD002B74A6 /* IDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseError.h; sourceTree = "<group>"; };
- C5198F3C1192ECFD002B74A6 /* IDBDatabaseError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseError.idl; sourceTree = "<group>"; };
- C5198F3D1192ECFD002B74A6 /* IDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseException.h; sourceTree = "<group>"; };
- C5198F3E1192ECFD002B74A6 /* IDBDatabaseException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseException.idl; sourceTree = "<group>"; };
- C5198F3F1192ECFD002B74A6 /* IDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseRequest.cpp; sourceTree = "<group>"; };
- C5198F401192ECFD002B74A6 /* IDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseRequest.h; sourceTree = "<group>"; };
- C5198F411192ECFD002B74A6 /* IDBDatabaseRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseRequest.idl; sourceTree = "<group>"; };
- C5198F421192ECFD002B74A6 /* IDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBRequest.cpp; sourceTree = "<group>"; };
- C5198F431192ECFD002B74A6 /* IDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBRequest.h; sourceTree = "<group>"; };
- C5198F441192ECFD002B74A6 /* IDBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBRequest.idl; sourceTree = "<group>"; };
- C5198F451192ECFD002B74A6 /* IndexedDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabase.cpp; sourceTree = "<group>"; };
- C5198F461192ECFD002B74A6 /* IndexedDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabase.h; sourceTree = "<group>"; };
- C5198F471192ECFD002B74A6 /* IndexedDatabaseImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabaseImpl.cpp; sourceTree = "<group>"; };
- C5198F481192ECFD002B74A6 /* IndexedDatabaseImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabaseImpl.h; sourceTree = "<group>"; };
- C5198F491192ECFD002B74A6 /* IndexedDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabaseRequest.cpp; sourceTree = "<group>"; };
- C5198F4A1192ECFD002B74A6 /* IndexedDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabaseRequest.h; sourceTree = "<group>"; };
- C5198F4B1192ECFD002B74A6 /* IndexedDatabaseRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IndexedDatabaseRequest.idl; sourceTree = "<group>"; };
- C51DA99F11AEF2C1009799C5 /* IDBIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndex.h; sourceTree = "<group>"; };
- C51DA9A011AEF2C1009799C5 /* IDBIndexImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBIndexImpl.cpp; sourceTree = "<group>"; };
- C51DA9A111AEF2C1009799C5 /* IDBIndexImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndexImpl.h; sourceTree = "<group>"; };
- C51DA9A211AEF2C1009799C5 /* IDBIndexRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBIndexRequest.cpp; sourceTree = "<group>"; };
- C51DA9A311AEF2C1009799C5 /* IDBIndexRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndexRequest.h; sourceTree = "<group>"; };
- C51DA9A411AEF2C1009799C5 /* IDBIndexRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBIndexRequest.idl; sourceTree = "<group>"; };
C544274911A57E7A0063A749 /* DOMStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStringList.h; sourceTree = "<group>"; };
C544274A11A57E7A0063A749 /* DOMStringList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMStringList.idl; sourceTree = "<group>"; };
C55610F011A704EB00B82D27 /* DOMStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMStringList.cpp; sourceTree = "<group>"; };
C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespaceImpl.h; sourceTree = "<group>"; };
C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespaceImpl.cpp; sourceTree = "<group>"; };
- C56C914D119D849800DE4CD9 /* JSIDBAnyCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBAnyCustom.cpp; sourceTree = "<group>"; };
- C56C914F119D84CB00DE4CD9 /* IDBAny.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBAny.cpp; sourceTree = "<group>"; };
- C56C9150119D84CB00DE4CD9 /* IDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBAny.h; sourceTree = "<group>"; };
- C56C9151119D84CB00DE4CD9 /* IDBAny.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBAny.idl; sourceTree = "<group>"; };
- C56C9159119D84E600DE4CD9 /* IDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBErrorEvent.cpp; sourceTree = "<group>"; };
- C56C915A119D84E600DE4CD9 /* IDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBErrorEvent.h; sourceTree = "<group>"; };
- C56C915B119D84E600DE4CD9 /* IDBErrorEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBErrorEvent.idl; sourceTree = "<group>"; };
- C56C915C119D84E600DE4CD9 /* IDBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBEvent.cpp; sourceTree = "<group>"; };
- C56C915D119D84E600DE4CD9 /* IDBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBEvent.h; sourceTree = "<group>"; };
- C56C915E119D84E600DE4CD9 /* IDBEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBEvent.idl; sourceTree = "<group>"; };
- C56C9165119D84FF00DE4CD9 /* IDBSuccessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBSuccessEvent.cpp; sourceTree = "<group>"; };
- C56C9166119D84FF00DE4CD9 /* IDBSuccessEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBSuccessEvent.h; sourceTree = "<group>"; };
- C56C9167119D84FF00DE4CD9 /* IDBSuccessEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBSuccessEvent.idl; sourceTree = "<group>"; };
- C56C9198119D915300DE4CD9 /* JSIDBAny.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBAny.cpp; sourceTree = "<group>"; };
- C56C9199119D915300DE4CD9 /* JSIDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBAny.h; sourceTree = "<group>"; };
- C56C919C119D918100DE4CD9 /* JSIDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBErrorEvent.cpp; sourceTree = "<group>"; };
- C56C919D119D918100DE4CD9 /* JSIDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBErrorEvent.h; sourceTree = "<group>"; };
- C56C919E119D918100DE4CD9 /* JSIDBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBEvent.cpp; sourceTree = "<group>"; };
- C56C919F119D918100DE4CD9 /* JSIDBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBEvent.h; sourceTree = "<group>"; };
- C56C91A4119D918700DE4CD9 /* JSIDBSuccessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBSuccessEvent.cpp; sourceTree = "<group>"; };
- C56C91A5119D918700DE4CD9 /* JSIDBSuccessEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBSuccessEvent.h; sourceTree = "<group>"; };
- C5BBC9CE11AEF838007C2BFE /* JSIDBIndexRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBIndexRequest.cpp; sourceTree = "<group>"; };
- C5BBC9CF11AEF838007C2BFE /* JSIDBIndexRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBIndexRequest.h; sourceTree = "<group>"; };
+ C585A65C11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBAnyCustom.cpp; sourceTree = "<group>"; };
+ C585A65D11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBKeyCustom.cpp; sourceTree = "<group>"; };
+ C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBBindingUtilities.cpp; sourceTree = "<group>"; };
+ C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBBindingUtilities.h; sourceTree = "<group>"; };
+ C585A66411D4FB07004C3E4B /* JSIDBAny.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBAny.cpp; sourceTree = "<group>"; };
+ C585A66511D4FB07004C3E4B /* JSIDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBAny.h; sourceTree = "<group>"; };
+ C585A66611D4FB07004C3E4B /* JSIDBDatabaseError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseError.cpp; sourceTree = "<group>"; };
+ C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseError.h; sourceTree = "<group>"; };
+ C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseException.cpp; sourceTree = "<group>"; };
+ C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseException.h; sourceTree = "<group>"; };
+ C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseRequest.cpp; sourceTree = "<group>"; };
+ C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseRequest.h; sourceTree = "<group>"; };
+ C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBErrorEvent.cpp; sourceTree = "<group>"; };
+ C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBErrorEvent.h; sourceTree = "<group>"; };
+ C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBEvent.cpp; sourceTree = "<group>"; };
+ C585A66F11D4FB07004C3E4B /* JSIDBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBEvent.h; sourceTree = "<group>"; };
+ C585A67011D4FB07004C3E4B /* JSIDBIndexRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBIndexRequest.cpp; sourceTree = "<group>"; };
+ C585A67111D4FB07004C3E4B /* JSIDBIndexRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBIndexRequest.h; sourceTree = "<group>"; };
+ C585A67211D4FB07004C3E4B /* JSIDBKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBKey.cpp; sourceTree = "<group>"; };
+ C585A67311D4FB07004C3E4B /* JSIDBKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKey.h; sourceTree = "<group>"; };
+ C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBKeyRange.cpp; sourceTree = "<group>"; };
+ C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKeyRange.h; sourceTree = "<group>"; };
+ C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
+ C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBObjectStoreRequest.h; sourceTree = "<group>"; };
+ C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBRequest.cpp; sourceTree = "<group>"; };
+ C585A67911D4FB07004C3E4B /* JSIDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBRequest.h; sourceTree = "<group>"; };
+ C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBSuccessEvent.cpp; sourceTree = "<group>"; };
+ C585A67B11D4FB07004C3E4B /* JSIDBSuccessEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBSuccessEvent.h; sourceTree = "<group>"; };
+ C585A69411D4FB13004C3E4B /* JSIndexedDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIndexedDatabaseRequest.cpp; sourceTree = "<group>"; };
+ C585A69511D4FB13004C3E4B /* JSIndexedDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIndexedDatabaseRequest.h; sourceTree = "<group>"; };
+ C585A69811D4FB3D004C3E4B /* IDBAny.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBAny.cpp; sourceTree = "<group>"; };
+ C585A69911D4FB3D004C3E4B /* IDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBAny.h; sourceTree = "<group>"; };
+ C585A69A11D4FB3D004C3E4B /* IDBAny.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBAny.idl; sourceTree = "<group>"; };
+ C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCallbacks.h; sourceTree = "<group>"; };
+ C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabase.h; sourceTree = "<group>"; };
+ C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseError.h; sourceTree = "<group>"; };
+ C585A69E11D4FB3D004C3E4B /* IDBDatabaseError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseError.idl; sourceTree = "<group>"; };
+ C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseException.h; sourceTree = "<group>"; };
+ C585A6A011D4FB3D004C3E4B /* IDBDatabaseException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseException.idl; sourceTree = "<group>"; };
+ C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseImpl.cpp; sourceTree = "<group>"; };
+ C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseImpl.h; sourceTree = "<group>"; };
+ C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseRequest.cpp; sourceTree = "<group>"; };
+ C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseRequest.h; sourceTree = "<group>"; };
+ C585A6A511D4FB3D004C3E4B /* IDBDatabaseRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseRequest.idl; sourceTree = "<group>"; };
+ C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBErrorEvent.cpp; sourceTree = "<group>"; };
+ C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBErrorEvent.h; sourceTree = "<group>"; };
+ C585A6A811D4FB3D004C3E4B /* IDBErrorEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBErrorEvent.idl; sourceTree = "<group>"; };
+ C585A6A911D4FB3D004C3E4B /* IDBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBEvent.cpp; sourceTree = "<group>"; };
+ C585A6AA11D4FB3D004C3E4B /* IDBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBEvent.h; sourceTree = "<group>"; };
+ C585A6AB11D4FB3D004C3E4B /* IDBEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBEvent.idl; sourceTree = "<group>"; };
+ C585A6AC11D4FB3D004C3E4B /* IDBIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndex.h; sourceTree = "<group>"; };
+ C585A6AD11D4FB3D004C3E4B /* IDBIndexImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBIndexImpl.cpp; sourceTree = "<group>"; };
+ C585A6AE11D4FB3D004C3E4B /* IDBIndexImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndexImpl.h; sourceTree = "<group>"; };
+ C585A6AF11D4FB3D004C3E4B /* IDBIndexRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBIndexRequest.cpp; sourceTree = "<group>"; };
+ C585A6B011D4FB3D004C3E4B /* IDBIndexRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIndexRequest.h; sourceTree = "<group>"; };
+ C585A6B111D4FB3D004C3E4B /* IDBIndexRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBIndexRequest.idl; sourceTree = "<group>"; };
+ C585A6B211D4FB3D004C3E4B /* IDBKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBKey.cpp; sourceTree = "<group>"; };
+ C585A6B311D4FB3D004C3E4B /* IDBKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKey.h; sourceTree = "<group>"; };
+ C585A6B411D4FB3D004C3E4B /* IDBKey.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBKey.idl; sourceTree = "<group>"; };
+ C585A6B511D4FB3D004C3E4B /* IDBKeyRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBKeyRange.cpp; sourceTree = "<group>"; };
+ C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKeyRange.h; sourceTree = "<group>"; };
+ C585A6B711D4FB3D004C3E4B /* IDBKeyRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBKeyRange.idl; sourceTree = "<group>"; };
+ C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKeyTree.h; sourceTree = "<group>"; };
+ C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStore.h; sourceTree = "<group>"; };
+ C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreImpl.cpp; sourceTree = "<group>"; };
+ C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreImpl.h; sourceTree = "<group>"; };
+ C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
+ C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreRequest.h; sourceTree = "<group>"; };
+ C585A6BE11D4FB3D004C3E4B /* IDBObjectStoreRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBObjectStoreRequest.idl; sourceTree = "<group>"; };
+ C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBRequest.cpp; sourceTree = "<group>"; };
+ C585A6C011D4FB3D004C3E4B /* IDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBRequest.h; sourceTree = "<group>"; };
+ C585A6C111D4FB3D004C3E4B /* IDBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBRequest.idl; sourceTree = "<group>"; };
+ C585A6C211D4FB3D004C3E4B /* IDBSuccessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBSuccessEvent.cpp; sourceTree = "<group>"; };
+ C585A6C311D4FB3D004C3E4B /* IDBSuccessEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBSuccessEvent.h; sourceTree = "<group>"; };
+ C585A6C411D4FB3D004C3E4B /* IDBSuccessEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBSuccessEvent.idl; sourceTree = "<group>"; };
+ C585A6C511D4FB3D004C3E4B /* IndexedDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabase.cpp; sourceTree = "<group>"; };
+ C585A6C611D4FB3D004C3E4B /* IndexedDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabase.h; sourceTree = "<group>"; };
+ C585A6C711D4FB3D004C3E4B /* IndexedDatabaseImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabaseImpl.cpp; sourceTree = "<group>"; };
+ C585A6C811D4FB3D004C3E4B /* IndexedDatabaseImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabaseImpl.h; sourceTree = "<group>"; };
+ C585A6C911D4FB3D004C3E4B /* IndexedDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexedDatabaseRequest.cpp; sourceTree = "<group>"; };
+ C585A6CA11D4FB3D004C3E4B /* IndexedDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexedDatabaseRequest.h; sourceTree = "<group>"; };
+ C585A6CB11D4FB3D004C3E4B /* IndexedDatabaseRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IndexedDatabaseRequest.idl; sourceTree = "<group>"; };
C5D4AA78116BAFB60069CA93 /* GlyphMetricsMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlyphMetricsMap.h; sourceTree = "<group>"; };
C5E9B67610697E1300C7BB1A /* StorageEventDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageEventDispatcher.cpp; sourceTree = "<group>"; };
C5EBDD81105EDDEC0056816F /* StorageEventDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageEventDispatcher.h; sourceTree = "<group>"; };
- C5F4F3FE119306AC00FDFADD /* JSIDBDatabaseError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseError.cpp; sourceTree = "<group>"; };
- C5F4F3FF119306AC00FDFADD /* JSIDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseError.h; sourceTree = "<group>"; };
- C5F4F400119306AC00FDFADD /* JSIDBDatabaseException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseException.cpp; sourceTree = "<group>"; };
- C5F4F401119306AC00FDFADD /* JSIDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseException.h; sourceTree = "<group>"; };
- C5F4F402119306AC00FDFADD /* JSIDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseRequest.cpp; sourceTree = "<group>"; };
- C5F4F403119306AC00FDFADD /* JSIDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseRequest.h; sourceTree = "<group>"; };
- C5F4F404119306AC00FDFADD /* JSIDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBRequest.cpp; sourceTree = "<group>"; };
- C5F4F405119306AC00FDFADD /* JSIDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBRequest.h; sourceTree = "<group>"; };
- C5F4F40E119306C000FDFADD /* JSIndexedDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIndexedDatabaseRequest.cpp; sourceTree = "<group>"; };
- C5F4F40F119306C000FDFADD /* JSIndexedDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIndexedDatabaseRequest.h; sourceTree = "<group>"; };
C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifySelectionListLevel.h; sourceTree = "<group>"; };
C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModifySelectionListLevel.cpp; sourceTree = "<group>"; };
+ CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptControllerBase.h; sourceTree = "<group>"; };
CE172E001136E8CE0062A533 /* ZoomMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZoomMode.h; sourceTree = "<group>"; };
CE4C00E310F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLNoScriptElement.cpp; sourceTree = "<group>"; };
CE4C00E510F6F7C100CA38F5 /* HTMLNoScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLNoScriptElement.h; sourceTree = "<group>"; };
@@ -10774,7 +10838,6 @@
F587866202DE3B1101EA4122 /* SSLKeyGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = SSLKeyGenerator.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
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>"; };
@@ -10822,8 +10885,6 @@
FABE72FC1059C21100D999DD /* MathMLNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLNames.cpp; sourceTree = "<group>"; };
FAC12CC21120DA6900DACC36 /* RenderMathMLSubSup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLSubSup.cpp; sourceTree = "<group>"; };
FAC12CC31120DA6900DACC36 /* RenderMathMLSubSup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLSubSup.h; sourceTree = "<group>"; };
- FE136AE710643BE50078CF6D /* WebCore.OrientationEvents.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.OrientationEvents.exp; sourceTree = "<group>"; };
- FE49BD301061719100D0E1AE /* WebCore.Inspector.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.Inspector.exp; sourceTree = "<group>"; };
FE49EF970DC51462004266E1 /* DashboardSupportCSSPropertyNames.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DashboardSupportCSSPropertyNames.in; sourceTree = "<group>"; };
FE6FD4850F676E5700092873 /* Coordinates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Coordinates.h; sourceTree = "<group>"; };
FE6FD4860F676E5700092873 /* Coordinates.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Coordinates.idl; sourceTree = "<group>"; };
@@ -10851,11 +10912,16 @@
FE80DA620E9C4703000D6F75 /* JSGeoposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeoposition.h; sourceTree = "<group>"; };
FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionError.cpp; sourceTree = "<group>"; };
FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionError.h; sourceTree = "<group>"; };
- FEA4133F105D67AE0007236F /* WebCore.DragSupport.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.DragSupport.exp; sourceTree = "<group>"; };
- FEFD102C105C41470002855E /* WebCore.ContextMenus.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.ContextMenus.exp; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 5D87BB4D11E3EAEB00702B6F /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
93F19B1208245E59001E9ABC /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -10880,6 +10946,7 @@
isa = PBXGroup;
children = (
93F19B1A08245E5A001E9ABC /* WebCore.framework */,
+ 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */,
);
name = Products;
sourceTree = SOURCE_ROOT;
@@ -11192,60 +11259,58 @@
1AD51A130CB59CD300953D11 /* DatabaseTracker.cpp */,
1AD51A120CB59CD300953D11 /* DatabaseTracker.h */,
51FAFE330CECBF2D00BB3F24 /* DatabaseTrackerClient.h */,
- C56C914F119D84CB00DE4CD9 /* IDBAny.cpp */,
- C56C9150119D84CB00DE4CD9 /* IDBAny.h */,
- C56C9151119D84CB00DE4CD9 /* IDBAny.idl */,
- C5198F381192ECFD002B74A6 /* IDBCallbacks.h */,
- C5198F3A1192ECFD002B74A6 /* IDBDatabase.h */,
- C5198F3B1192ECFD002B74A6 /* IDBDatabaseError.h */,
- C5198F3C1192ECFD002B74A6 /* IDBDatabaseError.idl */,
- C5198F3D1192ECFD002B74A6 /* IDBDatabaseException.h */,
- C5198F3E1192ECFD002B74A6 /* IDBDatabaseException.idl */,
- C50AD2A911AC1631008CF2FB /* IDBDatabaseImpl.cpp */,
- C50AD2AA11AC1631008CF2FB /* IDBDatabaseImpl.h */,
- C5198F3F1192ECFD002B74A6 /* IDBDatabaseRequest.cpp */,
- C5198F401192ECFD002B74A6 /* IDBDatabaseRequest.h */,
- C5198F411192ECFD002B74A6 /* IDBDatabaseRequest.idl */,
- C56C9159119D84E600DE4CD9 /* IDBErrorEvent.cpp */,
- C56C915A119D84E600DE4CD9 /* IDBErrorEvent.h */,
- C56C915B119D84E600DE4CD9 /* IDBErrorEvent.idl */,
- C56C915C119D84E600DE4CD9 /* IDBEvent.cpp */,
- C56C915D119D84E600DE4CD9 /* IDBEvent.h */,
- C56C915E119D84E600DE4CD9 /* IDBEvent.idl */,
- C51DA99F11AEF2C1009799C5 /* IDBIndex.h */,
- C51DA9A011AEF2C1009799C5 /* IDBIndexImpl.cpp */,
- C51DA9A111AEF2C1009799C5 /* IDBIndexImpl.h */,
- C51DA9A211AEF2C1009799C5 /* IDBIndexRequest.cpp */,
- C51DA9A311AEF2C1009799C5 /* IDBIndexRequest.h */,
- C51DA9A411AEF2C1009799C5 /* IDBIndexRequest.idl */,
- 816C806611BE887E009A45E9 /* IDBKeyRange.cpp */,
- 816C806711BE887E009A45E9 /* IDBKeyRange.h */,
- 81CC114011BEAA9D00D0D856 /* IDBKeyRange.idl */,
- B6693EE811AD63E6003F2770 /* IDBObjectStore.h */,
- B6693EE811AD63E6003F2770 /* IDBObjectStore.h */,
- B6B0540711B68F10002564C5 /* IDBObjectStoreImpl.cpp */,
- B6B0540711B68F10002564C5 /* IDBObjectStoreImpl.cpp */,
- B6B0540811B68F10002564C5 /* IDBObjectStoreImpl.h */,
- B6B0540811B68F10002564C5 /* IDBObjectStoreImpl.h */,
- B6693EE911AD63E6003F2770 /* IDBObjectStoreRequest.cpp */,
- B6693EE911AD63E6003F2770 /* IDBObjectStoreRequest.cpp */,
- B6693EEA11AD63E6003F2770 /* IDBObjectStoreRequest.h */,
- B6693EEA11AD63E6003F2770 /* IDBObjectStoreRequest.h */,
- B6693EEF11AD63F6003F2770 /* IDBObjectStoreRequest.idl */,
- B6693EEF11AD63F6003F2770 /* IDBObjectStoreRequest.idl */,
- C5198F421192ECFD002B74A6 /* IDBRequest.cpp */,
- C5198F431192ECFD002B74A6 /* IDBRequest.h */,
- C5198F441192ECFD002B74A6 /* IDBRequest.idl */,
- C56C9165119D84FF00DE4CD9 /* IDBSuccessEvent.cpp */,
- C56C9166119D84FF00DE4CD9 /* IDBSuccessEvent.h */,
- C56C9167119D84FF00DE4CD9 /* IDBSuccessEvent.idl */,
- C5198F451192ECFD002B74A6 /* IndexedDatabase.cpp */,
- C5198F461192ECFD002B74A6 /* IndexedDatabase.h */,
- C5198F471192ECFD002B74A6 /* IndexedDatabaseImpl.cpp */,
- C5198F481192ECFD002B74A6 /* IndexedDatabaseImpl.h */,
- C5198F491192ECFD002B74A6 /* IndexedDatabaseRequest.cpp */,
- C5198F4A1192ECFD002B74A6 /* IndexedDatabaseRequest.h */,
- C5198F4B1192ECFD002B74A6 /* IndexedDatabaseRequest.idl */,
+ C585A69811D4FB3D004C3E4B /* IDBAny.cpp */,
+ C585A69911D4FB3D004C3E4B /* IDBAny.h */,
+ C585A69A11D4FB3D004C3E4B /* IDBAny.idl */,
+ C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */,
+ C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */,
+ C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */,
+ C585A69E11D4FB3D004C3E4B /* IDBDatabaseError.idl */,
+ C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */,
+ C585A6A011D4FB3D004C3E4B /* IDBDatabaseException.idl */,
+ C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */,
+ C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */,
+ C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */,
+ C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */,
+ C585A6A511D4FB3D004C3E4B /* IDBDatabaseRequest.idl */,
+ C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */,
+ C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */,
+ C585A6A811D4FB3D004C3E4B /* IDBErrorEvent.idl */,
+ C585A6A911D4FB3D004C3E4B /* IDBEvent.cpp */,
+ C585A6AA11D4FB3D004C3E4B /* IDBEvent.h */,
+ C585A6AB11D4FB3D004C3E4B /* IDBEvent.idl */,
+ C585A6AC11D4FB3D004C3E4B /* IDBIndex.h */,
+ C585A6AD11D4FB3D004C3E4B /* IDBIndexImpl.cpp */,
+ C585A6AE11D4FB3D004C3E4B /* IDBIndexImpl.h */,
+ C585A6AF11D4FB3D004C3E4B /* IDBIndexRequest.cpp */,
+ C585A6B011D4FB3D004C3E4B /* IDBIndexRequest.h */,
+ C585A6B111D4FB3D004C3E4B /* IDBIndexRequest.idl */,
+ C585A6B211D4FB3D004C3E4B /* IDBKey.cpp */,
+ C585A6B311D4FB3D004C3E4B /* IDBKey.h */,
+ C585A6B411D4FB3D004C3E4B /* IDBKey.idl */,
+ C585A6B511D4FB3D004C3E4B /* IDBKeyRange.cpp */,
+ C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */,
+ C585A6B711D4FB3D004C3E4B /* IDBKeyRange.idl */,
+ C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */,
+ C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */,
+ C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */,
+ C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */,
+ C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */,
+ C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */,
+ C585A6BE11D4FB3D004C3E4B /* IDBObjectStoreRequest.idl */,
+ C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */,
+ C585A6C011D4FB3D004C3E4B /* IDBRequest.h */,
+ C585A6C111D4FB3D004C3E4B /* IDBRequest.idl */,
+ C585A6C211D4FB3D004C3E4B /* IDBSuccessEvent.cpp */,
+ C585A6C311D4FB3D004C3E4B /* IDBSuccessEvent.h */,
+ C585A6C411D4FB3D004C3E4B /* IDBSuccessEvent.idl */,
+ C585A6C511D4FB3D004C3E4B /* IndexedDatabase.cpp */,
+ C585A6C611D4FB3D004C3E4B /* IndexedDatabase.h */,
+ C585A6C711D4FB3D004C3E4B /* IndexedDatabaseImpl.cpp */,
+ C585A6C811D4FB3D004C3E4B /* IndexedDatabaseImpl.h */,
+ C585A6C911D4FB3D004C3E4B /* IndexedDatabaseRequest.cpp */,
+ C585A6CA11D4FB3D004C3E4B /* IndexedDatabaseRequest.h */,
+ C585A6CB11D4FB3D004C3E4B /* IndexedDatabaseRequest.idl */,
511F23130DC160DA004F0032 /* LocalStorageTask.cpp */,
511F23140DC160DA004F0032 /* LocalStorageTask.h */,
511F23150DC160DA004F0032 /* LocalStorageThread.cpp */,
@@ -11329,6 +11394,8 @@
9FA37EF71172FD9300C4CD55 /* JSScriptProfile.h */,
9FA37EF81172FD9300C4CD55 /* JSScriptProfileNode.cpp */,
9FA37EF91172FD9300C4CD55 /* JSScriptProfileNode.h */,
+ 4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend2.cpp */,
+ 4F4F5FFC11CBD30100A186BF /* RemoteInspectorFrontend2.h */,
);
name = Inspector;
sourceTree = "<group>";
@@ -11344,6 +11411,8 @@
7A0E76F610BF08ED00A0276E /* InjectedScriptHost.cpp */,
7A0E76F710BF08ED00A0276E /* InjectedScriptHost.h */,
7A0E76F810BF08ED00A0276E /* InjectedScriptHost.idl */,
+ B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */,
+ B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */,
7A74ECB8101839A500BF939E /* InspectorBackend.cpp */,
7A74ECB9101839A600BF939E /* InspectorBackend.h */,
7A74ECB61018399A00BF939E /* InspectorBackend.idl */,
@@ -11560,26 +11629,8 @@
449195900FBE175B00D9F824 /* Exports */ = {
isa = PBXGroup;
children = (
- 0F9C6F4B1073EF0400DED9BF /* WebCore.3DRendering.exp */,
- 0F5263E511DC136E0006D33C /* WebCore.AcceleratedCompositing.exp */,
- F58EF58E02DFDFB7018635CA /* WebCore.base.exp */,
- BC56CCDF10D72BD800A77C64 /* WebCore.ClientBasedGeolocation.exp */,
- FEFD102C105C41470002855E /* WebCore.ContextMenus.exp */,
- 4491959D0FBE17D700D9F824 /* WebCore.DashboardSupport.exp */,
- FEA4133F105D67AE0007236F /* WebCore.DragSupport.exp */,
- FE49BD301061719100D0E1AE /* WebCore.Inspector.exp */,
- 4491959C0FBE17D700D9F824 /* WebCore.JNI.exp */,
- 4491959A0FBE17D700D9F824 /* WebCore.NPAPI.exp */,
- FE136AE710643BE50078CF6D /* WebCore.OrientationEvents.exp */,
- 4491959B0FBE17D700D9F824 /* WebCore.PluginHostProcess.exp */,
- 271245D311890AB70083E852 /* WebCore.ProtectionSpaceAuthCallback.exp */,
- 449195990FBE17D700D9F824 /* WebCore.SVG.Animation.exp */,
- 449195980FBE17D700D9F824 /* WebCore.SVG.exp */,
- 449195970FBE17D700D9F824 /* WebCore.SVG.Filters.exp */,
- 449195960FBE17D700D9F824 /* WebCore.SVG.ForeignObject.exp */,
- 449195950FBE17D700D9F824 /* WebCore.Tiger.exp */,
- 63F371CD100E790000BBA87A /* WebCore.Video.exp */,
- 449195940FBE17D700D9F824 /* WebCore.VideoProxy.exp */,
+ 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */,
+ 5D4B8C5211E52C8B00BBB62F /* WebCore.exp.in */,
);
name = Exports;
sourceTree = "<group>";
@@ -11861,8 +11912,12 @@
children = (
9363B6290F8E8FE000803810 /* cf */,
5160F4920B0AA71500C1D2AF /* mac */,
- 51741D0C0B07259A00ED442C /* BackForwardList.cpp */,
51741D0B0B07259A00ED442C /* BackForwardList.h */,
+ BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */,
+ BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */,
+ BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */,
+ BCA8C81C11E3D36900812FB7 /* BackForwardController.h */,
+ BCA8C83011E3D53200812FB7 /* BackForwardControllerClient.h */,
51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */,
51C0AA380F2AA10A001648C2 /* CachedFrame.h */,
51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */,
@@ -11949,19 +12004,19 @@
isa = PBXGroup;
children = (
0AFDAC3610F5447400E1F3D2 /* mac */,
- A9C6E4E10D745E05006442E9 /* MimeType.cpp */,
- A9C6E4E20D745E05006442E9 /* MimeType.h */,
- A9C6E65E0D7466F2006442E9 /* MimeType.idl */,
- A9C6E4E50D745E18006442E9 /* MimeTypeArray.cpp */,
- A9C6E4E60D745E18006442E9 /* MimeTypeArray.h */,
- A9C6E65F0D746700006442E9 /* MimeTypeArray.idl */,
+ A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */,
+ A9C6E4E20D745E05006442E9 /* DOMMimeType.h */,
+ A9C6E65E0D7466F2006442E9 /* DOMMimeType.idl */,
+ A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */,
+ A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */,
+ A9C6E65F0D746700006442E9 /* DOMMimeTypeArray.idl */,
+ A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */,
+ A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */,
+ A9C6E6600D74670C006442E9 /* DOMPlugin.idl */,
1A219B3A0DCA87AB0040E3A0 /* npfunctions.h */,
- A9C6E4E90D745E2B006442E9 /* Plugin.cpp */,
- A9C6E4EA0D745E2B006442E9 /* Plugin.h */,
- A9C6E6600D74670C006442E9 /* Plugin.idl */,
- A9C6E4ED0D745E38006442E9 /* PluginArray.cpp */,
- A9C6E4EE0D745E38006442E9 /* PluginArray.h */,
- A9C6E6610D74671E006442E9 /* PluginArray.idl */,
+ A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */,
+ A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */,
+ A9C6E6610D74671E006442E9 /* DOMPluginArray.idl */,
A9C6E4F10D745E48006442E9 /* PluginData.cpp */,
A9C6E4F20D745E48006442E9 /* PluginData.h */,
1ADA140E0E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp */,
@@ -12281,6 +12336,7 @@
8AF4E55811DC5A63000ED3DE /* Timing.cpp */,
8AF4E55911DC5A63000ED3DE /* Timing.h */,
8AF4E55A11DC5A63000ED3DE /* Timing.idl */,
+ 003F1FE911E6AB43008258D9 /* UserContentTypes.h */,
BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */,
BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */,
BCA2B0601050475F0043BD1C /* UserScript.h */,
@@ -13664,6 +13720,8 @@
1A494E290A12354300FDAFC1 /* HTMLDocument.idl */,
A871038811A2947000DBD50E /* HTMLDocumentParser.cpp */,
A871038911A2947000DBD50E /* HTMLDocumentParser.h */,
+ 97EF560E11E40783007E026F /* HTMLConstructionSite.cpp */,
+ 97EF560F11E40783007E026F /* HTMLConstructionSite.h */,
F523D23E02DE4396018635CA /* HTMLElement.cpp */,
F523D23F02DE4396018635CA /* HTMLElement.h */,
1A494BBB0A122DCD00FDAFC1 /* HTMLElement.idl */,
@@ -14639,30 +14697,32 @@
B59DD697119029E5007E9684 /* JSDatabaseCallback.h */,
B58CEB6811913607002A6790 /* JSDatabaseSync.cpp */,
B58CEB6711913607002A6790 /* JSDatabaseSync.h */,
- C56C9198119D915300DE4CD9 /* JSIDBAny.cpp */,
- C56C9199119D915300DE4CD9 /* JSIDBAny.h */,
- C5F4F3FE119306AC00FDFADD /* JSIDBDatabaseError.cpp */,
- C5F4F3FF119306AC00FDFADD /* JSIDBDatabaseError.h */,
- C5F4F400119306AC00FDFADD /* JSIDBDatabaseException.cpp */,
- C5F4F401119306AC00FDFADD /* JSIDBDatabaseException.h */,
- C5F4F402119306AC00FDFADD /* JSIDBDatabaseRequest.cpp */,
- C5F4F403119306AC00FDFADD /* JSIDBDatabaseRequest.h */,
- C56C919C119D918100DE4CD9 /* JSIDBErrorEvent.cpp */,
- C56C919D119D918100DE4CD9 /* JSIDBErrorEvent.h */,
- C56C919E119D918100DE4CD9 /* JSIDBEvent.cpp */,
- C56C919F119D918100DE4CD9 /* JSIDBEvent.h */,
- C5BBC9CE11AEF838007C2BFE /* JSIDBIndexRequest.cpp */,
- C5BBC9CF11AEF838007C2BFE /* JSIDBIndexRequest.h */,
- 816C80B011BE9934009A45E9 /* JSIDBKeyRange.cpp */,
- 816C80AE11BE990D009A45E9 /* JSIDBKeyRange.h */,
- B6693EF011AD6486003F2770 /* JSIDBObjectStoreRequest.cpp */,
- B6693EF111AD6486003F2770 /* JSIDBObjectStoreRequest.h */,
- C5F4F404119306AC00FDFADD /* JSIDBRequest.cpp */,
- C5F4F405119306AC00FDFADD /* JSIDBRequest.h */,
- C56C91A4119D918700DE4CD9 /* JSIDBSuccessEvent.cpp */,
- C56C91A5119D918700DE4CD9 /* JSIDBSuccessEvent.h */,
- C5F4F40E119306C000FDFADD /* JSIndexedDatabaseRequest.cpp */,
- C5F4F40F119306C000FDFADD /* JSIndexedDatabaseRequest.h */,
+ C585A66411D4FB07004C3E4B /* JSIDBAny.cpp */,
+ C585A66511D4FB07004C3E4B /* JSIDBAny.h */,
+ C585A66611D4FB07004C3E4B /* JSIDBDatabaseError.cpp */,
+ C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */,
+ C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */,
+ C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */,
+ C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */,
+ C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */,
+ C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */,
+ C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */,
+ C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */,
+ C585A66F11D4FB07004C3E4B /* JSIDBEvent.h */,
+ C585A67011D4FB07004C3E4B /* JSIDBIndexRequest.cpp */,
+ C585A67111D4FB07004C3E4B /* JSIDBIndexRequest.h */,
+ C585A67211D4FB07004C3E4B /* JSIDBKey.cpp */,
+ C585A67311D4FB07004C3E4B /* JSIDBKey.h */,
+ C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */,
+ C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */,
+ C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */,
+ C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */,
+ C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */,
+ C585A67911D4FB07004C3E4B /* JSIDBRequest.h */,
+ C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */,
+ C585A67B11D4FB07004C3E4B /* JSIDBSuccessEvent.h */,
+ C585A69411D4FB13004C3E4B /* JSIndexedDatabaseRequest.cpp */,
+ C585A69511D4FB13004C3E4B /* JSIndexedDatabaseRequest.h */,
514C76350CE9225E007EF3CD /* JSSQLError.cpp */,
BC8243250D0CE8A200460C8F /* JSSQLError.h */,
B525A96411CA2340003A23A8 /* JSSQLException.cpp */,
@@ -14717,14 +14777,14 @@
A9D247F90D757E4100FDF959 /* Plugins */ = {
isa = PBXGroup;
children = (
- A9D248020D757E7D00FDF959 /* JSMimeType.cpp */,
- A9D248030D757E7D00FDF959 /* JSMimeType.h */,
- A9D248040D757E7D00FDF959 /* JSMimeTypeArray.cpp */,
- A9D248050D757E7D00FDF959 /* JSMimeTypeArray.h */,
- A9D247FA0D757E6900FDF959 /* JSPlugin.cpp */,
- A9D247FB0D757E6900FDF959 /* JSPlugin.h */,
- A9D247FC0D757E6900FDF959 /* JSPluginArray.cpp */,
- A9D247FD0D757E6900FDF959 /* JSPluginArray.h */,
+ A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */,
+ A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */,
+ A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */,
+ A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */,
+ A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */,
+ A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */,
+ A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */,
+ A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */,
);
name = Plugins;
sourceTree = "<group>";
@@ -15512,6 +15572,7 @@
14813BF309EDF88E00F757E1 /* IDLParser.pm */,
93F8B3080A300FEA00F61AB8 /* IDLStructure.pm */,
97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */,
+ CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */,
);
path = bindings;
sourceTree = "<group>";
@@ -15533,6 +15594,8 @@
BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */,
1432E8480C51493F00B1500F /* GCController.cpp */,
1432E8460C51493800B1500F /* GCController.h */,
+ C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */,
+ C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */,
1C81BA030E97348300266E07 /* JavaScriptCallFrame.cpp */,
1C81BA040E97348300266E07 /* JavaScriptCallFrame.h */,
BC53DAC411432FD9000D817E /* JSDebugWrapperSet.cpp */,
@@ -15678,6 +15741,9 @@
49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */,
1AC226160DB69F740089B669 /* JSDOMApplicationCacheCustom.cpp */,
2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */,
+ A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */,
+ A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */,
+ A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */,
BC64649B11D8238C006455B0 /* JSDOMStringMapCustom.cpp */,
BCD9C25E0C17AA67005C90A2 /* JSDOMWindowCustom.cpp */,
652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */,
@@ -15703,7 +15769,8 @@
448AD27A0A4813790023D179 /* JSHTMLOptionsCollectionCustom.cpp */,
BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */,
AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */,
- C56C914D119D849800DE4CD9 /* JSIDBAnyCustom.cpp */,
+ C585A65C11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp */,
+ C585A65D11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp */,
A7D0318D0E93540300E24ACD /* JSImageDataCustom.cpp */,
7A0E76D410BF050700A0276E /* JSInjectedScriptHostCustom.cpp */,
7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */,
@@ -15716,7 +15783,6 @@
410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */,
E1ADED460E76B8DD004A1A5E /* JSMessagePortCustom.cpp */,
41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */,
- A9C6E6460D7465CA006442E9 /* JSMimeTypeArrayCustom.cpp */,
BCD9C25F0C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp */,
A9C6E6480D7465D8006442E9 /* JSNavigatorCustom.cpp */,
BCD9C2600C17AA67005C90A2 /* JSNodeCustom.cpp */,
@@ -15724,8 +15790,6 @@
BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */,
1A750DD30A90E729000FF215 /* JSNodeIteratorCustom.cpp */,
BCD9C2610C17AA67005C90A2 /* JSNodeListCustom.cpp */,
- A9C6E64A0D7465E7006442E9 /* JSPluginArrayCustom.cpp */,
- A9C6E64B0D7465E7006442E9 /* JSPluginCustom.cpp */,
5189F01710B3781300F3C739 /* JSPopStateEventCustom.cpp */,
9FA37EE61172FCF000C4CD55 /* JSScriptProfileNodeCustom.cpp */,
51DCE8010CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp */,
@@ -15844,10 +15908,16 @@
BCE1C43A0D9830D3003B02F2 /* JSLocation.h */,
9FFE3EA311B5A4390037874E /* JSMemoryInfo.cpp */,
9FFE3EA411B5A4390037874E /* JSMemoryInfo.h */,
+ 8A9A586E11E84C35008ACFD1 /* JSNavigation.cpp */,
+ 8A9A586F11E84C36008ACFD1 /* JSNavigation.h */,
A9D247F50D757E3300FDF959 /* JSNavigator.cpp */,
A9D247F60D757E3300FDF959 /* JSNavigator.h */,
+ 8A9A587211E84C81008ACFD1 /* JSPerformance.cpp */,
+ 8A9A587311E84C81008ACFD1 /* JSPerformance.h */,
BCEC01C00C274DDD009F4EC9 /* JSScreen.cpp */,
BCEC01C10C274DDD009F4EC9 /* JSScreen.h */,
+ 8A9A587611E84C98008ACFD1 /* JSTiming.cpp */,
+ 8A9A587711E84C98008ACFD1 /* JSTiming.h */,
494BD79B0F55C94C00747828 /* JSWebKitPoint.cpp */,
494BD79C0F55C94C00747828 /* JSWebKitPoint.h */,
);
@@ -16762,8 +16832,6 @@
AB23A32609BBA7D00067CC53 /* BeforeTextInsertedEvent.h */,
85031B260A44EFC700F992E0 /* BeforeUnloadEvent.cpp */,
85031B270A44EFC700F992E0 /* BeforeUnloadEvent.h */,
- 0BC2C7751134A8FC000B2F61 /* CanvasSurface.cpp */,
- 0BC2C7761134A8FC000B2F61 /* CanvasSurface.h */,
6550B693099DF0270090D781 /* CDATASection.cpp */,
6550B694099DF0270090D781 /* CDATASection.h */,
85089CC90A98C2AB00A275AA /* CDATASection.idl */,
@@ -16807,8 +16875,8 @@
BC64641A11D7F416006455B0 /* DatasetDOMStringMap.h */,
A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */,
A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */,
- 59A8F1D311A69508001AC34A /* DeviceOrientation.cpp */,
- 59A8F1D511A69513001AC34A /* DeviceOrientation.h */,
+ 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */,
+ 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */,
59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */,
59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */,
59A85EA3119D68EC00DEF1EF /* DeviceOrientationEvent.h */,
@@ -17171,7 +17239,6 @@
49C7B9DD1042D32F0009D447 /* CanvasRenderingContext.h in Headers */,
49484FCB102CF23C00187DD3 /* CanvasRenderingContext2D.h in Headers */,
49484FCE102CF23C00187DD3 /* CanvasStyle.h in Headers */,
- 0BC2C7781134A8FC000B2F61 /* CanvasSurface.h in Headers */,
6550B69E099DF0270090D781 /* CDATASection.h in Headers */,
514185EE0CD65F0400763C99 /* ChangeVersionWrapper.h in Headers */,
6550B6A0099DF0270090D781 /* CharacterData.h in Headers */,
@@ -17314,7 +17381,7 @@
93309DE1099E64920056E581 /* DeleteSelectionCommand.h in Headers */,
93F1998208245E59001E9ABC /* DeprecatedPtrList.h in Headers */,
93F1996D08245E59001E9ABC /* DeprecatedPtrListImpl.h in Headers */,
- 59A8F1D611A69513001AC34A /* DeviceOrientation.h in Headers */,
+ 59A8F1D611A69513001AC34A /* DeviceOrientationController.h in Headers */,
59A8F1D811A69520001AC34A /* DeviceOrientationClient.h in Headers */,
59A85EA4119D68EC00DEF1EF /* DeviceOrientationEvent.h in Headers */,
B2F34FE60E82F81400F627CD /* DNS.h in Headers */,
@@ -18316,29 +18383,6 @@
1A2D753D0DE47FAB00F0A648 /* IconFetcher.h in Headers */,
513F14540AB634C400094DDF /* IconLoader.h in Headers */,
51E1ECC10C91C90400DC255B /* IconRecord.h in Headers */,
- C56C9153119D84CB00DE4CD9 /* IDBAny.h in Headers */,
- C5198F4C1192ECFD002B74A6 /* IDBCallbacks.h in Headers */,
- C5198F4E1192ECFD002B74A6 /* IDBDatabase.h in Headers */,
- C5198F4F1192ECFD002B74A6 /* IDBDatabaseError.h in Headers */,
- C5198F511192ECFD002B74A6 /* IDBDatabaseException.h in Headers */,
- C5198F541192ECFD002B74A6 /* IDBDatabaseRequest.h in Headers */,
- C56C9160119D84E600DE4CD9 /* IDBErrorEvent.h in Headers */,
- C56C9163119D84E600DE4CD9 /* IDBEvent.h in Headers */,
- C51DA9A511AEF2C1009799C5 /* IDBIndex.h in Headers */,
- C51DA9A511AEF2C1009799C5 /* IDBIndex.h in Headers */,
- C51DA9A711AEF2C1009799C5 /* IDBIndexImpl.h in Headers */,
- C51DA9A711AEF2C1009799C5 /* IDBIndexImpl.h in Headers */,
- C51DA9A911AEF2C1009799C5 /* IDBIndexRequest.h in Headers */,
- C51DA9A911AEF2C1009799C5 /* IDBIndexRequest.h in Headers */,
- 816C806911BE887E009A45E9 /* IDBKeyRange.h in Headers */,
- B6693EEC11AD63E6003F2770 /* IDBObjectStore.h in Headers */,
- B6693EEC11AD63E6003F2770 /* IDBObjectStore.h in Headers */,
- B6B0540A11B68F10002564C5 /* IDBObjectStoreImpl.h in Headers */,
- B6B0540A11B68F10002564C5 /* IDBObjectStoreImpl.h in Headers */,
- B6693EEE11AD63E6003F2770 /* IDBObjectStoreRequest.h in Headers */,
- B6693EEE11AD63E6003F2770 /* IDBObjectStoreRequest.h in Headers */,
- C5198F571192ECFD002B74A6 /* IDBRequest.h in Headers */,
- C56C9169119D84FF00DE4CD9 /* IDBSuccessEvent.h in Headers */,
1A71D57C0F33819000F9CE4E /* IdentifierRep.h in Headers */,
49E911C50EF86D47009D0CAF /* IdentityTransformOperation.h in Headers */,
C0C054CD1118C8E400CE2636 /* IDLParser.pm in Headers */,
@@ -18354,9 +18398,6 @@
4B3480940EEF50D400AC1B41 /* ImageSourceCG.h in Headers */,
316FE1180E6E1DA700BF6088 /* ImplicitAnimation.h in Headers */,
DB23C2CC0A508D29002489EB /* IndentOutdentCommand.h in Headers */,
- C5198F5A1192ECFD002B74A6 /* IndexedDatabase.h in Headers */,
- C5198F5C1192ECFD002B74A6 /* IndexedDatabaseImpl.h in Headers */,
- C5198F5E1192ECFD002B74A6 /* IndexedDatabaseRequest.h in Headers */,
F3644B001119805900E0D537 /* InjectedScript.h in Headers */,
7A0E76FA10BF08ED00A0276E /* InjectedScriptHost.h in Headers */,
A8CFF5E50A155A05000A4234 /* InlineBox.h in Headers */,
@@ -18569,22 +18610,8 @@
A80E7B0C0A19D606007FB8C5 /* JSHTMLTitleElement.h in Headers */,
1A85B2110A1B258700D8C87C /* JSHTMLUListElement.h in Headers */,
E44614170CD6826900FADA75 /* JSHTMLVideoElement.h in Headers */,
- C56C919B119D915300DE4CD9 /* JSIDBAny.h in Headers */,
- C5F4F407119306AC00FDFADD /* JSIDBDatabaseError.h in Headers */,
- C5F4F409119306AC00FDFADD /* JSIDBDatabaseException.h in Headers */,
- C5F4F40B119306AC00FDFADD /* JSIDBDatabaseRequest.h in Headers */,
- C56C91A1119D918100DE4CD9 /* JSIDBErrorEvent.h in Headers */,
- C56C91A3119D918100DE4CD9 /* JSIDBEvent.h in Headers */,
- C5BBC9D111AEF838007C2BFE /* JSIDBIndexRequest.h in Headers */,
- C5BBC9D111AEF838007C2BFE /* JSIDBIndexRequest.h in Headers */,
- 816C80AF11BE990D009A45E9 /* JSIDBKeyRange.h in Headers */,
- B6693EF311AD6486003F2770 /* JSIDBObjectStoreRequest.h in Headers */,
- B6693EF311AD6486003F2770 /* JSIDBObjectStoreRequest.h in Headers */,
- C5F4F40D119306AC00FDFADD /* JSIDBRequest.h in Headers */,
- C56C91A7119D918700DE4CD9 /* JSIDBSuccessEvent.h in Headers */,
BC6C49F40D7DBA0500FFA558 /* JSImageConstructor.h in Headers */,
A77979290D6B9E64003851B9 /* JSImageData.h in Headers */,
- C5F4F411119306C000FDFADD /* JSIndexedDatabaseRequest.h in Headers */,
7A0E76DB10BF059800A0276E /* JSInjectedScriptHost.h in Headers */,
41F060CE0F5EEB2B00A07EAC /* JSInspectorBackend.h in Headers */,
7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */,
@@ -18602,8 +18629,8 @@
75793EC90D0CE72D007FC0AC /* JSMessageEvent.h in Headers */,
E1ADEDDA0E76BD93004A1A5E /* JSMessagePort.h in Headers */,
41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */,
- A9D248070D757E7D00FDF959 /* JSMimeType.h in Headers */,
- A9D248090D757E7D00FDF959 /* JSMimeTypeArray.h in Headers */,
+ A9D248070D757E7D00FDF959 /* JSDOMMimeType.h in Headers */,
+ A9D248090D757E7D00FDF959 /* JSDOMMimeTypeArray.h in Headers */,
A86629D109DA2B48009633A5 /* JSMouseEvent.h in Headers */,
65DF31FC09D1CC60000BE325 /* JSMutationEvent.h in Headers */,
BCD9C2C10C17B69E005C90A2 /* JSNamedNodeMap.h in Headers */,
@@ -18619,8 +18646,8 @@
A826E8AE0A1A8F2300CD1BB6 /* JSOptionConstructor.h in Headers */,
1A0D57410A5C7867007EDD4C /* JSOverflowEvent.h in Headers */,
E1284BB110449FFA00EAEB52 /* JSPageTransitionEvent.h in Headers */,
- A9D247FF0D757E6900FDF959 /* JSPlugin.h in Headers */,
- A9D248010D757E6900FDF959 /* JSPluginArray.h in Headers */,
+ A9D247FF0D757E6900FDF959 /* JSDOMPlugin.h in Headers */,
+ A9D248010D757E6900FDF959 /* JSDOMPluginArray.h in Headers */,
93B70D6C09EB0C7C009D8468 /* JSPluginElementFunctions.h in Headers */,
5189F01E10B37BD900F3C739 /* JSPopStateEvent.h in Headers */,
FE80DA720E9C472F000D6F75 /* JSPositionError.h in Headers */,
@@ -18892,8 +18919,8 @@
75793E840D0CE0B3007FC0AC /* MessageEvent.h in Headers */,
E1ADECBF0E76ACF1004A1A5E /* MessagePort.h in Headers */,
41BF700C0FE86F49005E8DEC /* MessagePortChannel.h in Headers */,
- A9C6E4E40D745E05006442E9 /* MimeType.h in Headers */,
- A9C6E4E80D745E18006442E9 /* MimeTypeArray.h in Headers */,
+ A9C6E4E40D745E05006442E9 /* DOMMimeType.h in Headers */,
+ A9C6E4E80D745E18006442E9 /* DOMMimeTypeArray.h in Headers */,
BC772C4F0C4EB3040083285F /* MIMETypeRegistry.h in Headers */,
C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */,
85031B460A44EFC700F992E0 /* MouseEvent.h in Headers */,
@@ -18977,8 +19004,8 @@
1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */,
B2C3DA2B0D006C1D00EF6F26 /* PlatformString.h in Headers */,
935C476B09AC4D4F00A6AAB4 /* PlatformWheelEvent.h in Headers */,
- A9C6E4EC0D745E2B006442E9 /* Plugin.h in Headers */,
- A9C6E4F00D745E38006442E9 /* PluginArray.h in Headers */,
+ A9C6E4EC0D745E2B006442E9 /* DOMPlugin.h in Headers */,
+ A9C6E4F00D745E38006442E9 /* DOMPluginArray.h in Headers */,
A9C6E4F40D745E48006442E9 /* PluginData.h in Headers */,
1AC694C80A3B1676003F5049 /* PluginDocument.h in Headers */,
7693BAD4106C2DCA007B0823 /* PluginHalter.h in Headers */,
@@ -19694,12 +19721,76 @@
E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */,
97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */,
+ B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */,
+ 97EF561111E40783007E026F /* HTMLConstructionSite.h in Headers */,
+ BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */,
+ BCA8C83111E3D53200812FB7 /* BackForwardControllerClient.h in Headers */,
+ BCA8CA6011E4E6D100812FB7 /* BackForwardListImpl.h in Headers */,
+ 003F1FEA11E6AB43008258D9 /* UserContentTypes.h in Headers */,
+ CE02F0C411E83ADD00C6684A /* ScriptControllerBase.h in Headers */,
+ 8A9A587111E84C36008ACFD1 /* JSNavigation.h in Headers */,
+ 8A9A587511E84C81008ACFD1 /* JSPerformance.h in Headers */,
+ 8A9A588811E84F37008ACFD1 /* JSTiming.h in Headers */,
+ C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */,
+ C585A67D11D4FB08004C3E4B /* JSIDBAny.h in Headers */,
+ C585A67F11D4FB08004C3E4B /* JSIDBDatabaseError.h in Headers */,
+ C585A68111D4FB08004C3E4B /* JSIDBDatabaseException.h in Headers */,
+ C585A68311D4FB08004C3E4B /* JSIDBDatabaseRequest.h in Headers */,
+ C585A68511D4FB08004C3E4B /* JSIDBErrorEvent.h in Headers */,
+ C585A68711D4FB08004C3E4B /* JSIDBEvent.h in Headers */,
+ C585A68911D4FB08004C3E4B /* JSIDBIndexRequest.h in Headers */,
+ C585A68B11D4FB08004C3E4B /* JSIDBKey.h in Headers */,
+ C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */,
+ C585A68F11D4FB08004C3E4B /* JSIDBObjectStoreRequest.h in Headers */,
+ C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */,
+ C585A69311D4FB08004C3E4B /* JSIDBSuccessEvent.h in Headers */,
+ C585A69711D4FB13004C3E4B /* JSIndexedDatabaseRequest.h in Headers */,
+ C585A6CD11D4FB3D004C3E4B /* IDBAny.h in Headers */,
+ C585A6CF11D4FB3D004C3E4B /* IDBCallbacks.h in Headers */,
+ C585A6D011D4FB3D004C3E4B /* IDBDatabase.h in Headers */,
+ C585A6D111D4FB3D004C3E4B /* IDBDatabaseError.h in Headers */,
+ C585A6D311D4FB3D004C3E4B /* IDBDatabaseException.h in Headers */,
+ C585A6D611D4FB3D004C3E4B /* IDBDatabaseImpl.h in Headers */,
+ C585A6D811D4FB3D004C3E4B /* IDBDatabaseRequest.h in Headers */,
+ C585A6DB11D4FB3D004C3E4B /* IDBErrorEvent.h in Headers */,
+ C585A6DE11D4FB3D004C3E4B /* IDBEvent.h in Headers */,
+ C585A6E011D4FB3D004C3E4B /* IDBIndex.h in Headers */,
+ C585A6E211D4FB3D004C3E4B /* IDBIndexImpl.h in Headers */,
+ C585A6E411D4FB3D004C3E4B /* IDBIndexRequest.h in Headers */,
+ C585A6E711D4FB3D004C3E4B /* IDBKey.h in Headers */,
+ C585A6EA11D4FB3D004C3E4B /* IDBKeyRange.h in Headers */,
+ C585A6EC11D4FB3D004C3E4B /* IDBKeyTree.h in Headers */,
+ C585A6ED11D4FB3D004C3E4B /* IDBObjectStore.h in Headers */,
+ C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreImpl.h in Headers */,
+ C585A6F111D4FB3D004C3E4B /* IDBObjectStoreRequest.h in Headers */,
+ C585A6F411D4FB3D004C3E4B /* IDBRequest.h in Headers */,
+ C585A6F711D4FB3D004C3E4B /* IDBSuccessEvent.h in Headers */,
+ C585A6FA11D4FB3D004C3E4B /* IndexedDatabase.h in Headers */,
+ C585A6FC11D4FB3D004C3E4B /* IndexedDatabaseImpl.h in Headers */,
+ C585A6FE11D4FB3D004C3E4B /* IndexedDatabaseRequest.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5D87BB5911E3EB0700702B6F /* Build configuration list for PBXNativeTarget "WebCoreExportFileGenerator" */;
+ buildPhases = (
+ 5D87BB4C11E3EAEB00702B6F /* Sources */,
+ 5D87BB4D11E3EAEB00702B6F /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 5D87BB6B11E3EBD200702B6F /* PBXTargetDependency */,
+ );
+ name = WebCoreExportFileGenerator;
+ productName = WebCoreExportFileGenerator;
+ productReference = 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */;
+ productType = "com.apple.product-type.tool";
+ };
93F198A508245E59001E9ABC /* WebCore */ = {
isa = PBXNativeTarget;
buildConfigurationList = 149C283908902B11008A9EFC /* Build configuration list for PBXNativeTarget "WebCore" */;
@@ -19707,7 +19798,7 @@
5D2F7DA00C6879C600B5B72B /* Update Info.plist with version information */,
93F198A608245E59001E9ABC /* Headers */,
1C11CCB40AA6093700DADB20 /* Copy Generated Headers */,
- 1CC93C640DAE929600E4BC3A /* Copy Forwarding and ICU Headers */,
+ 5D87BC0711E43BDE00702B6F /* Copy Forwarding and ICU Headers */,
93F199FD08245E59001E9ABC /* Resources */,
1C81BA330E97357C00266E07 /* Copy Inspector Resources */,
1C5F9D760E09A1B400E91D0A /* Streamline Inspector Source */,
@@ -19753,6 +19844,8 @@
targets = (
93F198A508245E59001E9ABC /* WebCore */,
DD041FBE09D9DDBE0010AF2A /* Derived Sources */,
+ 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */,
+ 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */,
);
};
/* End PBXProject section */
@@ -19836,50 +19929,67 @@
shellPath = /bin/sh;
shellScript = "# Copy all the Inspector front-end resources.\nditto \"${SRCROOT}/inspector/front-end\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\"\n\n# Remove the WebKit.qrc file since it is not used on the Mac (this file is for Qt)\nrm -f \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/WebKit.qrc\"\n";
};
- 1CC93C640DAE929600E4BC3A /* Copy Forwarding and ICU Headers */ = {
+ 5D0D540D0E9862F60029E223 /* Check For Weak VTables and Externals */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)",
);
- name = "Copy Forwarding and ICU Headers";
+ name = "Check For Weak VTables and Externals";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "rsync -aq --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/ForwardingHeaders\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\nrsync -aq --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/icu\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\n";
+ shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../WebKitTools/Scripts/check-for-weak-vtables-and-externals ]; then\n ../WebKitTools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi";
};
- 5D0D540D0E9862F60029E223 /* Check For Weak VTables and Externals */ = {
+ 5D2F7DA00C6879C600B5B72B /* Update Info.plist with version information */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)",
+ "$(SRCROOT)/Configurations/Version.xcconfig",
);
- name = "Check For Weak VTables and Externals";
+ name = "Update Info.plist with version information";
outputPaths = (
+ "$(SRCROOT)/Info.plist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../WebKitTools/Scripts/check-for-weak-vtables-and-externals ]; then\n ../WebKitTools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi";
+ shellScript = "# Touch Info.plist to let Xcode know it needs to copy it into the built product\nif [[ \"${CONFIGURATION}\" != \"Production\" ]]; then\n touch \"$SRCROOT/Info.plist\";\nfi;\n";
};
- 5D2F7DA00C6879C600B5B72B /* Update Info.plist with version information */ = {
+ 5D87BB6311E3EBC100702B6F /* Generate Export File Generator */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "$(SRCROOT)/Configurations/Version.xcconfig",
+ "$(SRCROOT)/WebCore.exp.in",
+ "$(SRCROOT)/make-export-file-generator",
);
- name = "Update Info.plist with version information";
+ name = "Generate Export File Generator";
outputPaths = (
- "$(SRCROOT)/Info.plist",
+ "$(BUILT_PRODUCTS_DIR)/DerivedSources/$(PROJECT_NAME)/ExportFileGenerator.cpp",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# Touch Info.plist to let Xcode know it needs to copy it into the built product\nif [[ \"${CONFIGURATION}\" != \"Production\" ]]; then\n touch \"$SRCROOT/Info.plist\";\nfi;\n";
+ shellScript = "OUTPUT_DIR=\"${BUILT_PRODUCTS_DIR}/DerivedSources/${PROJECT_NAME}\"\nmkdir -p \"${OUTPUT_DIR}\"\n\"${SRCROOT}\"/make-export-file-generator \"${SRCROOT}/WebCore.exp.in\" \"${OUTPUT_DIR}/ExportFileGenerator.cpp\"\n";
+ };
+ 5D87BC0711E43BDE00702B6F /* Copy Forwarding and ICU Headers */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Copy Forwarding and ICU Headers";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "rsync -av --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/ForwardingHeaders\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\nrsync -av --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/icu\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\n";
};
5DF50887116F3077005202AB /* Check For Inappropriate Files In Framework */ = {
isa = PBXShellScriptBuildPhase;
@@ -19942,6 +20052,14 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 5D87BB4C11E3EAEB00702B6F /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5D87BB8311E3ED8600702B6F /* ExportFileGenerator.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
93F19A0C08245E59001E9ABC /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -19999,7 +20117,6 @@
A8CFF0500A154F09000A4234 /* AutoTableLayout.cpp in Sources */,
29A812370FBB9C1D00510293 /* AXObjectCache.cpp in Sources */,
29A8124B0FBB9CA900510293 /* AXObjectCacheMac.mm in Sources */,
- 51741D100B07259A00ED442C /* BackForwardList.cpp in Sources */,
BC124EE70C2641CD009E2349 /* BarInfo.cpp in Sources */,
B2C3DA210D006C1D00EF6F26 /* Base64.cpp in Sources */,
5172204B11D2960500638B42 /* BeforeProcessEvent.cpp in Sources */,
@@ -20041,7 +20158,6 @@
49C7B9DC1042D32F0009D447 /* CanvasRenderingContext.cpp in Sources */,
49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */,
49484FCD102CF23C00187DD3 /* CanvasStyle.cpp in Sources */,
- 0BC2C7771134A8FC000B2F61 /* CanvasSurface.cpp in Sources */,
6550B69D099DF0270090D781 /* CDATASection.cpp in Sources */,
514185EF0CD65F0400763C99 /* ChangeVersionWrapper.cpp in Sources */,
6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */,
@@ -20156,7 +20272,7 @@
93309DDE099E64920056E581 /* DeleteFromTextNodeCommand.cpp in Sources */,
93309DE0099E64920056E581 /* DeleteSelectionCommand.cpp in Sources */,
93F19A3C08245E59001E9ABC /* DeprecatedPtrListImpl.cpp in Sources */,
- 59A8F1D411A69508001AC34A /* DeviceOrientation.cpp in Sources */,
+ 59A8F1D411A69508001AC34A /* DeviceOrientationController.cpp in Sources */,
59A85EA2119D68D900DEF1EF /* DeviceOrientationEvent.cpp in Sources */,
B2F34FE90E82F82700F627CD /* DNSCFNet.cpp in Sources */,
BCB16C290979C3BD00467741 /* DocLoader.cpp in Sources */,
@@ -20678,23 +20794,6 @@
513F14530AB634C400094DDF /* IconLoader.cpp in Sources */,
B275358E0B053A66002CE64F /* IconMac.mm in Sources */,
51E1ECC00C91C90400DC255B /* IconRecord.cpp in Sources */,
- C56C9152119D84CB00DE4CD9 /* IDBAny.cpp in Sources */,
- B627FB2D11AD743500E97B72 /* IDBDatabaseImpl.cpp in Sources */,
- B627FB2D11AD743500E97B72 /* IDBDatabaseImpl.cpp in Sources */,
- C5198F531192ECFD002B74A6 /* IDBDatabaseRequest.cpp in Sources */,
- C56C915F119D84E600DE4CD9 /* IDBErrorEvent.cpp in Sources */,
- C56C9162119D84E600DE4CD9 /* IDBEvent.cpp in Sources */,
- C51DA9A611AEF2C1009799C5 /* IDBIndexImpl.cpp in Sources */,
- C51DA9A611AEF2C1009799C5 /* IDBIndexImpl.cpp in Sources */,
- C51DA9A811AEF2C1009799C5 /* IDBIndexRequest.cpp in Sources */,
- C51DA9A811AEF2C1009799C5 /* IDBIndexRequest.cpp in Sources */,
- 816C806811BE887E009A45E9 /* IDBKeyRange.cpp in Sources */,
- B6B0540911B68F10002564C5 /* IDBObjectStoreImpl.cpp in Sources */,
- B6B0540911B68F10002564C5 /* IDBObjectStoreImpl.cpp in Sources */,
- B6693EED11AD63E6003F2770 /* IDBObjectStoreRequest.cpp in Sources */,
- B6693EED11AD63E6003F2770 /* IDBObjectStoreRequest.cpp in Sources */,
- C5198F561192ECFD002B74A6 /* IDBRequest.cpp in Sources */,
- C56C9168119D84FF00DE4CD9 /* IDBSuccessEvent.cpp in Sources */,
1A71D57B0F33819000F9CE4E /* IdentifierRep.cpp in Sources */,
B275356F0B053814002CE64F /* Image.cpp in Sources */,
B2A10B940B3818D700099AA4 /* ImageBufferCG.cpp in Sources */,
@@ -20708,9 +20807,6 @@
4B3480930EEF50D400AC1B41 /* ImageSourceCGMac.mm in Sources */,
316FE1170E6E1DA700BF6088 /* ImplicitAnimation.cpp in Sources */,
DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */,
- C5198F591192ECFD002B74A6 /* IndexedDatabase.cpp in Sources */,
- C5198F5B1192ECFD002B74A6 /* IndexedDatabaseImpl.cpp in Sources */,
- C5198F5D1192ECFD002B74A6 /* IndexedDatabaseRequest.cpp in Sources */,
F3644AFF1119805900E0D537 /* InjectedScript.cpp in Sources */,
7A0E76F910BF08ED00A0276E /* InjectedScriptHost.cpp in Sources */,
A8CFF5E60A155A05000A4234 /* InlineBox.cpp in Sources */,
@@ -20963,24 +21059,9 @@
A80E7B130A19D606007FB8C5 /* JSHTMLTitleElement.cpp in Sources */,
1A85B2100A1B258700D8C87C /* JSHTMLUListElement.cpp in Sources */,
E44614160CD6826900FADA75 /* JSHTMLVideoElement.cpp in Sources */,
- C56C919A119D915300DE4CD9 /* JSIDBAny.cpp in Sources */,
- C56C914E119D849800DE4CD9 /* JSIDBAnyCustom.cpp in Sources */,
- C5F4F406119306AC00FDFADD /* JSIDBDatabaseError.cpp in Sources */,
- C5F4F408119306AC00FDFADD /* JSIDBDatabaseException.cpp in Sources */,
- C5F4F40A119306AC00FDFADD /* JSIDBDatabaseRequest.cpp in Sources */,
- C56C91A0119D918100DE4CD9 /* JSIDBErrorEvent.cpp in Sources */,
- C56C91A2119D918100DE4CD9 /* JSIDBEvent.cpp in Sources */,
- C5BBC9D011AEF838007C2BFE /* JSIDBIndexRequest.cpp in Sources */,
- C5BBC9D011AEF838007C2BFE /* JSIDBIndexRequest.cpp in Sources */,
- 816C80B111BE9934009A45E9 /* JSIDBKeyRange.cpp in Sources */,
- B6693EF211AD6486003F2770 /* JSIDBObjectStoreRequest.cpp in Sources */,
- B6693EF211AD6486003F2770 /* JSIDBObjectStoreRequest.cpp in Sources */,
- C5F4F40C119306AC00FDFADD /* JSIDBRequest.cpp in Sources */,
- C56C91A6119D918700DE4CD9 /* JSIDBSuccessEvent.cpp in Sources */,
BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
A77979280D6B9E64003851B9 /* JSImageData.cpp in Sources */,
A7D0318E0E93540300E24ACD /* JSImageDataCustom.cpp in Sources */,
- C5F4F410119306C000FDFADD /* JSIndexedDatabaseRequest.cpp in Sources */,
7A0E76DA10BF059800A0276E /* JSInjectedScriptHost.cpp in Sources */,
7A0E76D510BF050700A0276E /* JSInjectedScriptHostCustom.cpp in Sources */,
41F060CD0F5EEB2B00A07EAC /* JSInspectorBackend.cpp in Sources */,
@@ -21008,9 +21089,9 @@
410B7E721045FAB000D8224F /* JSMessageEventCustom.cpp in Sources */,
E1ADEDDB0E76BD93004A1A5E /* JSMessagePort.cpp in Sources */,
E1ADED470E76B8DD004A1A5E /* JSMessagePortCustom.cpp in Sources */,
- A9D248060D757E7D00FDF959 /* JSMimeType.cpp in Sources */,
- A9D248080D757E7D00FDF959 /* JSMimeTypeArray.cpp in Sources */,
- A9C6E6470D7465CA006442E9 /* JSMimeTypeArrayCustom.cpp in Sources */,
+ A9D248060D757E7D00FDF959 /* JSDOMMimeType.cpp in Sources */,
+ A9D248080D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp in Sources */,
+ A9C6E6470D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp in Sources */,
A86629D209DA2B48009633A5 /* JSMouseEvent.cpp in Sources */,
65DF31FB09D1CC60000BE325 /* JSMutationEvent.cpp in Sources */,
BCD9C2C00C17B69E005C90A2 /* JSNamedNodeMap.cpp in Sources */,
@@ -21032,10 +21113,10 @@
A826EC480A1B0CBE00CD1BB6 /* JSOptionConstructor.cpp in Sources */,
1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */,
E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */,
- A9D247FE0D757E6900FDF959 /* JSPlugin.cpp in Sources */,
- A9D248000D757E6900FDF959 /* JSPluginArray.cpp in Sources */,
- A9C6E64C0D7465E7006442E9 /* JSPluginArrayCustom.cpp in Sources */,
- A9C6E64D0D7465E7006442E9 /* JSPluginCustom.cpp in Sources */,
+ A9D247FE0D757E6900FDF959 /* JSDOMPlugin.cpp in Sources */,
+ A9D248000D757E6900FDF959 /* JSDOMPluginArray.cpp in Sources */,
+ A9C6E64C0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp in Sources */,
+ A9C6E64D0D7465E7006442E9 /* JSDOMPluginCustom.cpp in Sources */,
93B70D6B09EB0C7C009D8468 /* JSPluginElementFunctions.cpp in Sources */,
5189F01D10B37BD900F3C739 /* JSPopStateEvent.cpp in Sources */,
5189F01810B3781300F3C739 /* JSPopStateEventCustom.cpp in Sources */,
@@ -21331,8 +21412,8 @@
75793E830D0CE0B3007FC0AC /* MessageEvent.cpp in Sources */,
E1ADECC00E76ACF1004A1A5E /* MessagePort.cpp in Sources */,
41BF700B0FE86F49005E8DEC /* MessagePortChannel.cpp in Sources */,
- A9C6E4E30D745E05006442E9 /* MimeType.cpp in Sources */,
- A9C6E4E70D745E18006442E9 /* MimeTypeArray.cpp in Sources */,
+ A9C6E4E30D745E05006442E9 /* DOMMimeType.cpp in Sources */,
+ A9C6E4E70D745E18006442E9 /* DOMMimeTypeArray.cpp in Sources */,
BC772C4E0C4EB3040083285F /* MIMETypeRegistry.cpp in Sources */,
BC772C5E0C4EB3440083285F /* MIMETypeRegistryMac.mm in Sources */,
C6D74AE409AA290A000B0A52 /* ModifySelectionListLevel.cpp in Sources */,
@@ -21397,8 +21478,8 @@
935C477109AC4D7300A6AAB4 /* PlatformMouseEventMac.mm in Sources */,
BC94D1080C274F88006BC617 /* PlatformScreenMac.mm in Sources */,
1AD8F81C11CAB9E900E93E54 /* PlatformStrategies.cpp in Sources */,
- A9C6E4EB0D745E2B006442E9 /* Plugin.cpp in Sources */,
- A9C6E4EF0D745E38006442E9 /* PluginArray.cpp in Sources */,
+ A9C6E4EB0D745E2B006442E9 /* DOMPlugin.cpp in Sources */,
+ A9C6E4EF0D745E38006442E9 /* DOMPluginArray.cpp in Sources */,
A9C6E4F30D745E48006442E9 /* PluginData.cpp in Sources */,
1AC694C70A3B1676003F5049 /* PluginDocument.cpp in Sources */,
7693BAD3106C2DCA007B0823 /* PluginHalter.cpp in Sources */,
@@ -22032,12 +22113,62 @@
93F19B0508245E59001E9ABC /* XSLTProcessorLibxslt.cpp in Sources */,
E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */,
97DD4D860FDF4D6E00ECF9A4 /* XSSAuditor.cpp in Sources */,
+ B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */,
+ BCA8C81F11E3D36900812FB7 /* BackForwardController.cpp in Sources */,
+ 4F4F5FFB11CBD2E100A186BF /* RemoteInspectorFrontend2.cpp in Sources */,
+ 97EF561011E40783007E026F /* HTMLConstructionSite.cpp in Sources */,
+ BCA8CA5F11E4E6D100812FB7 /* BackForwardListImpl.cpp in Sources */,
+ 8A9A587011E84C36008ACFD1 /* JSNavigation.cpp in Sources */,
+ 8A9A587411E84C81008ACFD1 /* JSPerformance.cpp in Sources */,
+ 8A9A588711E84F37008ACFD1 /* JSTiming.cpp in Sources */,
+ C585A65E11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp in Sources */,
+ C585A65F11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp in Sources */,
+ C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */,
+ C585A67C11D4FB08004C3E4B /* JSIDBAny.cpp in Sources */,
+ C585A67E11D4FB08004C3E4B /* JSIDBDatabaseError.cpp in Sources */,
+ C585A68011D4FB08004C3E4B /* JSIDBDatabaseException.cpp in Sources */,
+ C585A68211D4FB08004C3E4B /* JSIDBDatabaseRequest.cpp in Sources */,
+ C585A68411D4FB08004C3E4B /* JSIDBErrorEvent.cpp in Sources */,
+ C585A68611D4FB08004C3E4B /* JSIDBEvent.cpp in Sources */,
+ C585A68811D4FB08004C3E4B /* JSIDBIndexRequest.cpp in Sources */,
+ C585A68A11D4FB08004C3E4B /* JSIDBKey.cpp in Sources */,
+ C585A68C11D4FB08004C3E4B /* JSIDBKeyRange.cpp in Sources */,
+ C585A68E11D4FB08004C3E4B /* JSIDBObjectStoreRequest.cpp in Sources */,
+ C585A69011D4FB08004C3E4B /* JSIDBRequest.cpp in Sources */,
+ C585A69211D4FB08004C3E4B /* JSIDBSuccessEvent.cpp in Sources */,
+ C585A69611D4FB13004C3E4B /* JSIndexedDatabaseRequest.cpp in Sources */,
+ C585A6CC11D4FB3D004C3E4B /* IDBAny.cpp in Sources */,
+ C585A6D511D4FB3D004C3E4B /* IDBDatabaseImpl.cpp in Sources */,
+ C585A6D711D4FB3D004C3E4B /* IDBDatabaseRequest.cpp in Sources */,
+ C585A6DA11D4FB3D004C3E4B /* IDBErrorEvent.cpp in Sources */,
+ C585A6DD11D4FB3D004C3E4B /* IDBEvent.cpp in Sources */,
+ C585A6E111D4FB3D004C3E4B /* IDBIndexImpl.cpp in Sources */,
+ C585A6E311D4FB3D004C3E4B /* IDBIndexRequest.cpp in Sources */,
+ C585A6E611D4FB3D004C3E4B /* IDBKey.cpp in Sources */,
+ C585A6E911D4FB3D004C3E4B /* IDBKeyRange.cpp in Sources */,
+ C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp in Sources */,
+ C585A6F011D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp in Sources */,
+ C585A6F311D4FB3D004C3E4B /* IDBRequest.cpp in Sources */,
+ C585A6F611D4FB3D004C3E4B /* IDBSuccessEvent.cpp in Sources */,
+ C585A6F911D4FB3D004C3E4B /* IndexedDatabase.cpp in Sources */,
+ C585A6FB11D4FB3D004C3E4B /* IndexedDatabaseImpl.cpp in Sources */,
+ C585A6FD11D4FB3D004C3E4B /* IndexedDatabaseRequest.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 5D87BB6B11E3EBD200702B6F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */;
+ targetProxy = 5D87BB6A11E3EBD200702B6F /* PBXContainerItemProxy */;
+ };
+ 5D87BB8F11E3EE2B00702B6F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */;
+ targetProxy = 5D87BB8E11E3EE2B00702B6F /* PBXContainerItemProxy */;
+ };
DD041FF109D9E3250010AF2A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DD041FBE09D9DDBE0010AF2A /* Derived Sources */;
@@ -22108,6 +22239,64 @@
};
name = Production;
};
+ 5D87BB5111E3EAEB00702B6F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */;
+ buildSettings = {
+ EXPORTED_SYMBOLS_FILE = "";
+ GCC_OPTIMIZATION_LEVEL = 0;
+ INSTALL_PATH = /usr/local/bin;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = WebCoreExportFileGenerator;
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ 5D87BB5211E3EAEB00702B6F /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */;
+ buildSettings = {
+ EXPORTED_SYMBOLS_FILE = "";
+ INSTALL_PATH = /usr/local/bin;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = WebCoreExportFileGenerator;
+ SKIP_INSTALL = YES;
+ };
+ name = Release;
+ };
+ 5D87BB5311E3EAEB00702B6F /* Production */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */;
+ buildSettings = {
+ EXPORTED_SYMBOLS_FILE = "";
+ INSTALL_PATH = /usr/local/bin;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = WebCoreExportFileGenerator;
+ SKIP_INSTALL = YES;
+ };
+ name = Production;
+ };
+ 5D87BB6511E3EBC200702B6F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "WebCoreExportFileGenerator Generator";
+ };
+ name = Debug;
+ };
+ 5D87BB6611E3EBC200702B6F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "WebCoreExportFileGenerator Generator";
+ };
+ name = Release;
+ };
+ 5D87BB6711E3EBC200702B6F /* Production */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "WebCoreExportFileGenerator Generator";
+ };
+ name = Production;
+ };
DD041FC209D9DDDC0010AF2A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */;
@@ -22155,6 +22344,26 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Production;
};
+ 5D87BB5911E3EB0700702B6F /* Build configuration list for PBXNativeTarget "WebCoreExportFileGenerator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5D87BB5111E3EAEB00702B6F /* Debug */,
+ 5D87BB5211E3EAEB00702B6F /* Release */,
+ 5D87BB5311E3EAEB00702B6F /* Production */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Production;
+ };
+ 5D87BB6C11E3EC0000702B6F /* Build configuration list for PBXAggregateTarget "WebCoreExportFileGenerator Generator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5D87BB6511E3EBC200702B6F /* Debug */,
+ 5D87BB6611E3EBC200702B6F /* Release */,
+ 5D87BB6711E3EBC200702B6F /* Production */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Production;
+ };
DD041FC109D9DDDC0010AF2A /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/WebCore/accessibility/AXObjectCache.h b/WebCore/accessibility/AXObjectCache.h
index 8d98fa3..f18d08a 100644
--- a/WebCore/accessibility/AXObjectCache.h
+++ b/WebCore/accessibility/AXObjectCache.h
@@ -27,7 +27,6 @@
#define AXObjectCache_h
#include "AccessibilityObject.h"
-#include "EventHandler.h"
#include "Timer.h"
#include <limits.h>
#include <wtf/HashMap.h>
diff --git a/WebCore/accessibility/AccessibilityListBox.h b/WebCore/accessibility/AccessibilityListBox.h
index 72ce82f..dcfdd6f 100644
--- a/WebCore/accessibility/AccessibilityListBox.h
+++ b/WebCore/accessibility/AccessibilityListBox.h
@@ -29,11 +29,10 @@
#ifndef AccessibilityListBox_h
#define AccessibilityListBox_h
-#include "AccessibilityObject.h"
#include "AccessibilityRenderObject.h"
namespace WebCore {
-
+
class AccessibilityListBox : public AccessibilityRenderObject {
private:
diff --git a/WebCore/accessibility/AccessibilityMenuList.h b/WebCore/accessibility/AccessibilityMenuList.h
index d00c8b4..376958f 100644
--- a/WebCore/accessibility/AccessibilityMenuList.h
+++ b/WebCore/accessibility/AccessibilityMenuList.h
@@ -26,7 +26,6 @@
#ifndef AccessibilityMenuList_h
#define AccessibilityMenuList_h
-#include "AccessibilityObject.h"
#include "AccessibilityRenderObject.h"
namespace WebCore {
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index 1ef6e09..2e53703 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -91,7 +91,8 @@ AccessibilityRenderObject::AccessibilityRenderObject(RenderObject* renderer)
, m_childrenDirty(false)
, m_roleForMSAA(UnknownRole)
{
- updateAccessibilityRole();
+ m_role = determineAccessibilityRole();
+
#ifndef NDEBUG
m_renderer->setHasAXObject(true);
#endif
@@ -553,7 +554,7 @@ bool AccessibilityRenderObject::isPressed() const
// If this is an ARIA button, check the aria-pressed attribute rather than node()->active()
if (ariaRoleAttribute() == ButtonRole) {
- if (equalIgnoringCase(getAttribute(aria_pressedAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_pressedAttr), "true"))
return true;
return false;
}
@@ -877,7 +878,7 @@ static Element* siblingWithAriaRole(String role, Node* node)
Node* sibling = node->parent()->firstChild();
while (sibling) {
if (sibling->isElementNode()) {
- String siblingAriaRole = static_cast<Element*>(sibling)->getAttribute(roleAttr).string();
+ const AtomicString& siblingAriaRole = static_cast<Element*>(sibling)->getAttribute(roleAttr);
if (equalIgnoringCase(siblingAriaRole, role))
return static_cast<Element*>(sibling);
}
@@ -1055,7 +1056,7 @@ int AccessibilityRenderObject::intValue() const
// If this is an ARIA checkbox or radio, check the aria-checked attribute rather than node()->checked()
AccessibilityRole ariaRole = ariaRoleAttribute();
if (ariaRole == RadioButtonRole || ariaRole == CheckBoxRole) {
- if (equalIgnoringCase(getAttribute(aria_checkedAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true"))
return true;
return false;
}
@@ -1101,8 +1102,12 @@ String AccessibilityRenderObject::stringValue() const
if (!m_renderer || isPasswordField())
return String();
- if (ariaRoleAttribute() == StaticTextRole)
- return text();
+ if (ariaRoleAttribute() == StaticTextRole) {
+ String staticText = text();
+ if (!staticText.length())
+ staticText = textUnderElement();
+ return staticText;
+ }
if (m_renderer->isText())
return textUnderElement();
@@ -1336,7 +1341,7 @@ String AccessibilityRenderObject::accessibilityDescription() const
if (!m_renderer)
return String();
- String ariaLabel = getAttribute(aria_labelAttr).string();
+ const AtomicString& ariaLabel = getAttribute(aria_labelAttr);
if (!ariaLabel.isEmpty())
return ariaLabel;
@@ -1542,7 +1547,7 @@ bool AccessibilityRenderObject::hasTextAlternative() const
{
// ARIA: section 2A, bullet #3 says if aria-labeledby or aria-label appears, it should
// override the "label" element association.
- if (!ariaLabeledByAttribute().isEmpty() || !getAttribute(aria_labelAttr).string().isEmpty())
+ if (!ariaLabeledByAttribute().isEmpty() || !getAttribute(aria_labelAttr).isEmpty())
return true;
return false;
@@ -1555,7 +1560,7 @@ bool AccessibilityRenderObject::ariaHasPopup() const
bool AccessibilityRenderObject::supportsARIAFlowTo() const
{
- return !getAttribute(aria_flowtoAttr).string().isEmpty();
+ return !getAttribute(aria_flowtoAttr).isEmpty();
}
void AccessibilityRenderObject::ariaFlowToElements(AccessibilityChildrenVector& flowTo) const
@@ -1576,13 +1581,13 @@ void AccessibilityRenderObject::ariaFlowToElements(AccessibilityChildrenVector&
bool AccessibilityRenderObject::supportsARIADropping() const
{
- const AtomicString& dropEffect = getAttribute(aria_dropeffectAttr).string();
+ const AtomicString& dropEffect = getAttribute(aria_dropeffectAttr);
return !dropEffect.isEmpty();
}
bool AccessibilityRenderObject::supportsARIADragging() const
{
- const AtomicString& grabbed = getAttribute(aria_grabbedAttr).string();
+ const AtomicString& grabbed = getAttribute(aria_grabbedAttr);
return equalIgnoringCase(grabbed, "true") || equalIgnoringCase(grabbed, "false");
}
@@ -1598,14 +1603,15 @@ void AccessibilityRenderObject::setARIAGrabbed(bool grabbed)
void AccessibilityRenderObject::determineARIADropEffects(Vector<String>& effects)
{
- String dropEffects = getAttribute(aria_dropeffectAttr).string();
+ const AtomicString& dropEffects = getAttribute(aria_dropeffectAttr);
if (dropEffects.isEmpty()) {
effects.clear();
return;
}
- dropEffects.replace('\n', ' ');
- dropEffects.split(' ', effects);
+ String dropEffectsString = dropEffects.string();
+ dropEffectsString.replace('\n', ' ');
+ dropEffectsString.split(' ', effects);
}
bool AccessibilityRenderObject::exposesTitleUIElement() const
@@ -1754,12 +1760,6 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
if (controlObject && !controlObject->exposesTitleUIElement() && controlObject->isCheckboxOrRadio())
return true;
- AccessibilityRole ariaRole = ariaRoleAttribute();
- if (ariaRole == TextAreaRole || ariaRole == StaticTextRole) {
- String ariaText = text();
- return ariaText.isNull() || ariaText.isEmpty();
- }
-
// NOTE: BRs always have text boxes now, so the text box check here can be removed
if (m_renderer->isText()) {
// static text beneath MenuItems and MenuButtons are just reported along with the menu item, so it's ignored on an individual level
@@ -1784,7 +1784,7 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
if (isControl())
return false;
- if (ariaRole != UnknownRole)
+ if (ariaRoleAttribute() != UnknownRole)
return false;
if (!helpText().isEmpty())
@@ -2047,7 +2047,7 @@ bool AccessibilityRenderObject::isVisited() const
bool AccessibilityRenderObject::isExpanded() const
{
- if (equalIgnoringCase(getAttribute(aria_expandedAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_expandedAttr), "true"))
return true;
return false;
@@ -2092,7 +2092,7 @@ void AccessibilityRenderObject::setIsExpanded(bool isExpanded)
bool AccessibilityRenderObject::isRequired() const
{
- if (equalIgnoringCase(getAttribute(aria_requiredAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_requiredAttr), "true"))
return true;
return false;
@@ -2107,7 +2107,7 @@ bool AccessibilityRenderObject::isSelected() const
if (!node)
return false;
- String ariaSelected = getAttribute(aria_selectedAttr).string();
+ const AtomicString& ariaSelected = getAttribute(aria_selectedAttr);
if (equalIgnoringCase(ariaSelected, "true"))
return true;
@@ -2263,7 +2263,7 @@ bool AccessibilityRenderObject::supportsARIAOwns() const
{
if (!m_renderer)
return false;
- const AtomicString& ariaOwns = getAttribute(aria_ownsAttr).string();
+ const AtomicString& ariaOwns = getAttribute(aria_ownsAttr);
return !ariaOwns.isEmpty();
}
@@ -2272,7 +2272,7 @@ bool AccessibilityRenderObject::isEnabled() const
{
ASSERT(m_renderer);
- if (equalIgnoringCase(getAttribute(aria_disabledAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_disabledAttr), "true"))
return false;
Node* node = m_renderer->node();
@@ -2817,7 +2817,7 @@ AccessibilityObject* AccessibilityRenderObject::activeDescendant() const
return 0;
Element* element = static_cast<Element*>(m_renderer->node());
- String activeDescendantAttrStr = element->getAttribute(aria_activedescendantAttr).string();
+ const AtomicString& activeDescendantAttrStr = element->getAttribute(aria_activedescendantAttr);
if (activeDescendantAttrStr.isNull() || activeDescendantAttrStr.isEmpty())
return 0;
@@ -2915,7 +2915,13 @@ bool AccessibilityRenderObject::renderObjectIsObservable(RenderObject* renderer)
return true;
// AX clients will listen for AXSelectedChildrenChanged on listboxes.
- if (renderer->isListBox() || axObjectCache()->nodeHasRole(renderer->node(), "listbox"))
+ AXObjectCache* cache = axObjectCache();
+ Node* node = renderer->node();
+ if (renderer->isListBox() || cache->nodeHasRole(node, "listbox"))
+ return true;
+
+ // Textboxes should send out notifications.
+ if (cache->nodeHasRole(node, "textbox"))
return true;
return false;
@@ -2934,7 +2940,7 @@ AccessibilityObject* AccessibilityRenderObject::observableObject() const
AccessibilityRole AccessibilityRenderObject::determineAriaRoleAttribute() const
{
- String ariaRole = getAttribute(roleAttr).string();
+ const AtomicString& ariaRole = getAttribute(roleAttr);
if (ariaRole.isNull() || ariaRole.isEmpty())
return UnknownRole;
@@ -2970,7 +2976,12 @@ AccessibilityRole AccessibilityRenderObject::ariaRoleAttribute() const
void AccessibilityRenderObject::updateAccessibilityRole()
{
+ bool ignoredStatus = accessibilityIsIgnored();
m_role = determineAccessibilityRole();
+
+ // The AX hierarchy only needs to be updated if the ignored status of an element has changed.
+ if (ignoredStatus != accessibilityIsIgnored())
+ childrenChanged();
}
AccessibilityRole AccessibilityRenderObject::determineAccessibilityRole()
@@ -3075,7 +3086,7 @@ AccessibilityRole AccessibilityRenderObject::determineAccessibilityRole()
AccessibilityOrientation AccessibilityRenderObject::orientation() const
{
- const AtomicString& ariaOrientation = getAttribute(aria_orientationAttr).string();
+ const AtomicString& ariaOrientation = getAttribute(aria_orientationAttr);
if (equalIgnoringCase(ariaOrientation, "horizontal"))
return AccessibilityOrientationHorizontal;
if (equalIgnoringCase(ariaOrientation, "vertical"))
@@ -3184,13 +3195,13 @@ bool AccessibilityRenderObject::canSetFocusAttribute() const
bool AccessibilityRenderObject::canSetExpandedAttribute() const
{
// An object can be expanded if it aria-expanded is true or false.
- String ariaExpanded = getAttribute(aria_expandedAttr).string();
+ const AtomicString& ariaExpanded = getAttribute(aria_expandedAttr);
return equalIgnoringCase(ariaExpanded, "true") || equalIgnoringCase(ariaExpanded, "false");
}
bool AccessibilityRenderObject::canSetValueAttribute() const
{
- if (equalIgnoringCase(getAttribute(aria_readonlyAttr).string(), "true"))
+ if (equalIgnoringCase(getAttribute(aria_readonlyAttr), "true"))
return false;
// Any node could be contenteditable, so isReadOnly should be relied upon
diff --git a/WebCore/accessibility/AccessibilityTable.cpp b/WebCore/accessibility/AccessibilityTable.cpp
index 8e0562c..437ac38 100644
--- a/WebCore/accessibility/AccessibilityTable.cpp
+++ b/WebCore/accessibility/AccessibilityTable.cpp
@@ -137,7 +137,10 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
unsigned borderedCellCount = 0;
unsigned backgroundDifferenceCellCount = 0;
+ int headersInFirstColumnCount = 0;
for (int row = 0; row < numRows; ++row) {
+
+ int headersInFirstRowCount = 0;
for (int col = 0; col < numCols; ++col) {
RenderTableCell* cell = firstBody->cellAt(row, col).cell;
if (!cell)
@@ -153,6 +156,15 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
HTMLTableCellElement* cellElement = static_cast<HTMLTableCellElement*>(cellNode);
+ bool isTHCell = cellElement->hasTagName(thTag);
+ // If the first row is comprised of all <th> tags, assume it is a data table.
+ if (!row && isTHCell)
+ headersInFirstRowCount++;
+
+ // If the first column is comprised of all <tg> tags, assume it is a data table.
+ if (!col && isTHCell)
+ headersInFirstColumnCount++;
+
// in this case, the developer explicitly assigned a "data" table attribute
if (!cellElement->headers().isEmpty() || !cellElement->abbr().isEmpty()
|| !cellElement->axis().isEmpty() || !cellElement->scope().isEmpty())
@@ -178,8 +190,14 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
if (borderedCellCount >= 10 || backgroundDifferenceCellCount >= 10)
return true;
}
+
+ if (!row && headersInFirstRowCount == numCols && numCols > 1)
+ return true;
}
+ if (headersInFirstColumnCount == numRows && numRows > 1)
+ return true;
+
// if there is less than two valid cells, it's not a data table
if (validCellCount <= 1)
return false;
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.h b/WebCore/accessibility/mac/AccessibilityObjectWrapper.h
index e6cc706..b54d3fc 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.h
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.h
@@ -29,8 +29,6 @@
#ifndef AccessibilityObjectWrapper_h
#define AccessibilityObjectWrapper_h
-#include <wtf/RefPtr.h>
-
#ifdef __OBJC__
@class WebCoreTextMarker;
@class WebCoreTextMarkerRange;
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
index 9de7e4d..a711116 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
@@ -44,6 +44,7 @@
#import "Frame.h"
#import "HTMLAnchorElement.h"
#import "HTMLAreaElement.h"
+#import "HTMLFrameOwnerElement.h"
#import "HTMLImageElement.h"
#import "HTMLInputElement.h"
#import "HTMLTextAreaElement.h"
@@ -1464,7 +1465,7 @@ static NSString* roleValueToNSString(AccessibilityRole value)
if ([attributeName isEqualToString: NSAccessibilitySelectedTextRangeAttribute]) {
PlainTextRange textRange = m_object->selectedTextRange();
if (textRange.isNull())
- return nil;
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
return [NSValue valueWithRange:NSMakeRange(textRange.start, textRange.length)];
}
// TODO: Get actual visible range. <rdar://problem/4712101>
diff --git a/WebCore/bindings/ScriptControllerBase.h b/WebCore/bindings/ScriptControllerBase.h
new file mode 100644
index 0000000..ed6ca62
--- /dev/null
+++ b/WebCore/bindings/ScriptControllerBase.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2010 Research in Motion Limited. All rights reserved.
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
+ * Copyright (C) 2001 Peter Kelly (pmk@post.com)
+ * Copyright (C) 1999 Harri Porten (porten@kde.org)
+ *
+ * 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 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 ScriptControllerBase_h
+#define ScriptControllerBase_h
+
+namespace WebCore {
+
+enum ReasonForCallingCanExecuteScripts {
+ AboutToExecuteScript,
+ NotAboutToExecuteScript
+};
+
+// Whether to call the XSSAuditor to audit a script before passing it to the JavaScript engine.
+enum ShouldAllowXSS {
+ AllowXSS,
+ DoNotAllowXSS
+};
+
+} // namespace WebCore
+
+#endif // ScriptControllerBase_h
diff --git a/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp b/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp
index 93ce1ee..7d4e5c1 100644
--- a/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp
+++ b/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp
@@ -75,6 +75,11 @@ bool RuntimeEnabledFeatures::mediaErrorEnabled()
return MediaPlayer::isAvailable();
}
+bool RuntimeEnabledFeatures::timeRangesEnabled()
+{
+ return MediaPlayer::isAvailable();
+}
+
#endif
#if ENABLE(SHARED_WORKERS)
diff --git a/WebCore/bindings/generic/RuntimeEnabledFeatures.h b/WebCore/bindings/generic/RuntimeEnabledFeatures.h
index 2d62a27..73bbf0f 100644
--- a/WebCore/bindings/generic/RuntimeEnabledFeatures.h
+++ b/WebCore/bindings/generic/RuntimeEnabledFeatures.h
@@ -63,6 +63,7 @@ public:
static bool htmlAudioElementEnabled();
static bool htmlVideoElementEnabled();
static bool mediaErrorEnabled();
+ static bool timeRangesEnabled();
#endif
#if ENABLE(SHARED_WORKERS)
diff --git a/WebCore/bindings/gobject/GObjectEventListener.h b/WebCore/bindings/gobject/GObjectEventListener.h
index c65b91e..7ca2cc7 100644
--- a/WebCore/bindings/gobject/GObjectEventListener.h
+++ b/WebCore/bindings/gobject/GObjectEventListener.h
@@ -21,6 +21,7 @@
#include "EventListener.h"
+#include "PlatformString.h"
#include <glib-object.h>
#include <glib.h>
#include <wtf/PassRefPtr.h>
diff --git a/WebCore/bindings/js/IDBBindingUtilities.cpp b/WebCore/bindings/js/IDBBindingUtilities.cpp
index faa2370..638a23e 100644
--- a/WebCore/bindings/js/IDBBindingUtilities.cpp
+++ b/WebCore/bindings/js/IDBBindingUtilities.cpp
@@ -26,10 +26,10 @@
#include "config.h"
#include "IDBBindingUtilities.h"
-#include "IDBKey.h"
-
#if ENABLE(INDEXED_DATABASE)
+#include "IDBKey.h"
+
namespace WebCore {
PassRefPtr<IDBKey> createIDBKeyFromValue(JSC::ExecState* exec, JSC::JSValue value)
diff --git a/WebCore/bindings/js/IDBBindingUtilities.h b/WebCore/bindings/js/IDBBindingUtilities.h
index 0a2fb790..f410344 100644
--- a/WebCore/bindings/js/IDBBindingUtilities.h
+++ b/WebCore/bindings/js/IDBBindingUtilities.h
@@ -26,11 +26,11 @@
#ifndef IDBBindingUtilities_h
#define IDBBindingUtilities_h
-#include "ScriptValue.h"
-#include <wtf/PassRefPtr.h>
-
#if ENABLE(INDEXED_DATABASE)
+#include "ScriptValue.h"
+#include <wtf/Forward.h>
+
namespace WebCore {
class IDBKey;
diff --git a/WebCore/bindings/js/JSBindingsAllInOne.cpp b/WebCore/bindings/js/JSBindingsAllInOne.cpp
index c9a77fb..373c0e0 100644
--- a/WebCore/bindings/js/JSBindingsAllInOne.cpp
+++ b/WebCore/bindings/js/JSBindingsAllInOne.cpp
@@ -97,7 +97,7 @@
#include "JSMessageChannelCustom.cpp"
#include "JSMessageEventCustom.cpp"
#include "JSMessagePortCustom.cpp"
-#include "JSMimeTypeArrayCustom.cpp"
+#include "JSDOMMimeTypeArrayCustom.cpp"
#include "JSNamedNodeMapCustom.cpp"
#include "JSNavigatorCustom.cpp"
#include "JSNodeCustom.cpp"
@@ -106,8 +106,8 @@
#include "JSNodeIteratorCustom.cpp"
#include "JSNodeListCustom.cpp"
#include "JSOptionConstructor.cpp"
-#include "JSPluginArrayCustom.cpp"
-#include "JSPluginCustom.cpp"
+#include "JSDOMPluginArrayCustom.cpp"
+#include "JSDOMPluginCustom.cpp"
#include "JSPluginElementFunctions.cpp"
#include "JSPopStateEventCustom.cpp"
#include "JSSQLResultSetRowListCustom.cpp"
diff --git a/WebCore/bindings/js/JSMimeTypeArrayCustom.cpp b/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp
index bdd6ddb..2d41843 100644
--- a/WebCore/bindings/js/JSMimeTypeArrayCustom.cpp
+++ b/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp
@@ -18,24 +18,24 @@
*/
#include "config.h"
-#include "JSMimeTypeArray.h"
+#include "JSDOMMimeTypeArray.h"
#include "AtomicString.h"
-#include "JSMimeType.h"
-#include "MimeTypeArray.h"
+#include "DOMMimeTypeArray.h"
+#include "JSDOMMimeType.h"
namespace WebCore {
using namespace JSC;
-bool JSMimeTypeArray::canGetItemsForName(ExecState*, MimeTypeArray* mimeTypeArray, const Identifier& propertyName)
+bool JSDOMMimeTypeArray::canGetItemsForName(ExecState*, DOMMimeTypeArray* mimeTypeArray, const Identifier& propertyName)
{
return mimeTypeArray->canGetItemsForName(identifierToAtomicString(propertyName));
}
-JSValue JSMimeTypeArray::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
+JSValue JSDOMMimeTypeArray::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
{
- JSMimeTypeArray* thisObj = static_cast<JSMimeTypeArray*>(asObject(slotBase));
+ JSDOMMimeTypeArray* thisObj = static_cast<JSDOMMimeTypeArray*>(asObject(slotBase));
return toJS(exec, thisObj->impl()->namedItem(identifierToAtomicString(propertyName)));
}
diff --git a/WebCore/bindings/js/JSPluginArrayCustom.cpp b/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp
index b232f4d..abf3148 100644
--- a/WebCore/bindings/js/JSPluginArrayCustom.cpp
+++ b/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp
@@ -18,24 +18,24 @@
*/
#include "config.h"
-#include "JSPluginArray.h"
+#include "JSDOMPluginArray.h"
#include "AtomicString.h"
-#include "JSPlugin.h"
-#include "PluginArray.h"
+#include "DOMPluginArray.h"
+#include "JSDOMPlugin.h"
namespace WebCore {
using namespace JSC;
-bool JSPluginArray::canGetItemsForName(ExecState*, PluginArray* pluginArray, const Identifier& propertyName)
+bool JSDOMPluginArray::canGetItemsForName(ExecState*, DOMPluginArray* pluginArray, const Identifier& propertyName)
{
return pluginArray->canGetItemsForName(identifierToAtomicString(propertyName));
}
-JSValue JSPluginArray::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
+JSValue JSDOMPluginArray::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
{
- JSPluginArray* thisObj = static_cast<JSPluginArray*>(asObject(slotBase));
+ JSDOMPluginArray* thisObj = static_cast<JSDOMPluginArray*>(asObject(slotBase));
return toJS(exec, thisObj->impl()->namedItem(identifierToAtomicString(propertyName)));
}
diff --git a/WebCore/bindings/js/JSPluginCustom.cpp b/WebCore/bindings/js/JSDOMPluginCustom.cpp
index 9fa0b76..c8d187e 100644
--- a/WebCore/bindings/js/JSPluginCustom.cpp
+++ b/WebCore/bindings/js/JSDOMPluginCustom.cpp
@@ -17,24 +17,24 @@
*/
#include "config.h"
-#include "JSPlugin.h"
+#include "JSDOMPlugin.h"
#include "AtomicString.h"
-#include "JSMimeType.h"
-#include "Plugin.h"
+#include "DOMPlugin.h"
+#include "JSDOMMimeType.h"
namespace WebCore {
using namespace JSC;
-bool JSPlugin::canGetItemsForName(ExecState*, Plugin* plugin, const Identifier& propertyName)
+bool JSDOMPlugin::canGetItemsForName(ExecState*, DOMPlugin* plugin, const Identifier& propertyName)
{
return plugin->canGetItemsForName(identifierToAtomicString(propertyName));
}
-JSValue JSPlugin::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
+JSValue JSDOMPlugin::nameGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName)
{
- JSPlugin* thisObj = static_cast<JSPlugin*>(asObject(slotBase));
+ JSDOMPlugin* thisObj = static_cast<JSDOMPlugin*>(asObject(slotBase));
return toJS(exec, thisObj->impl()->namedItem(identifierToAtomicString(propertyName)));
}
diff --git a/WebCore/bindings/js/JSIDBAnyCustom.cpp b/WebCore/bindings/js/JSIDBAnyCustom.cpp
index 43a79a2..b7c845e 100644
--- a/WebCore/bindings/js/JSIDBAnyCustom.cpp
+++ b/WebCore/bindings/js/JSIDBAnyCustom.cpp
@@ -11,9 +11,6 @@
* 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
@@ -37,10 +34,12 @@
#include "IDBAny.h"
#include "IDBDatabaseRequest.h"
#include "IDBIndexRequest.h"
+#include "IDBKey.h"
#include "IDBObjectStoreRequest.h"
#include "IndexedDatabaseRequest.h"
#include "JSIDBDatabaseRequest.h"
#include "JSIDBIndexRequest.h"
+#include "JSIDBKey.h"
#include "JSIDBObjectStoreRequest.h"
#include "JSIndexedDatabaseRequest.h"
#include "SerializedScriptValue.h"
@@ -63,6 +62,8 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, IDBAny* idbAny)
return toJS(exec, globalObject, idbAny->idbDatabaseRequest());
case IDBAny::IDBIndexRequestType:
return toJS(exec, globalObject, idbAny->idbIndexRequest());
+ case IDBAny::IDBKeyType:
+ return toJS(exec, globalObject, idbAny->idbKey());
case IDBAny::IDBObjectStoreRequestType:
return toJS(exec, globalObject, idbAny->idbObjectStoreRequest());
case IDBAny::IndexedDatabaseRequestType:
diff --git a/WebCore/bindings/js/JSSharedWorkerCustom.cpp b/WebCore/bindings/js/JSSharedWorkerCustom.cpp
index 261ae2b..0d576e0 100644
--- a/WebCore/bindings/js/JSSharedWorkerCustom.cpp
+++ b/WebCore/bindings/js/JSSharedWorkerCustom.cpp
@@ -70,7 +70,10 @@ EncodedJSValue JSC_HOST_CALL JSSharedWorkerConstructor::constructJSSharedWorker(
DOMWindow* window = asJSDOMWindow(exec->lexicalGlobalObject())->impl();
ExceptionCode ec = 0;
RefPtr<SharedWorker> worker = SharedWorker::create(ustringToString(scriptURL), ustringToString(name), window->document(), ec);
- setDOMException(exec, ec);
+ if (ec) {
+ setDOMException(exec, ec);
+ return JSValue::encode(JSValue());
+ }
return JSValue::encode(asObject(toJS(exec, jsConstructor->globalObject(), worker.release())));
}
diff --git a/WebCore/bindings/js/ScriptCallStack.cpp b/WebCore/bindings/js/ScriptCallStack.cpp
index 86ddcd1..c9bb8b0 100644
--- a/WebCore/bindings/js/ScriptCallStack.cpp
+++ b/WebCore/bindings/js/ScriptCallStack.cpp
@@ -100,7 +100,7 @@ void ScriptCallStack::initialize()
m_initialized = true;
}
-bool ScriptCallStack::stackTrace(int, ScriptState*, ScriptArray&)
+bool ScriptCallStack::stackTrace(int, const RefPtr<InspectorArray>&)
{
return false;
}
diff --git a/WebCore/bindings/js/ScriptCallStack.h b/WebCore/bindings/js/ScriptCallStack.h
index 6cf7679..e461ac3 100644
--- a/WebCore/bindings/js/ScriptCallStack.h
+++ b/WebCore/bindings/js/ScriptCallStack.h
@@ -36,6 +36,7 @@
#include "ScriptState.h"
#include "ScriptString.h"
#include <wtf/Noncopyable.h>
+#include <wtf/RefPtr.h>
namespace JSC {
class ExecState;
@@ -44,6 +45,8 @@ namespace JSC {
namespace WebCore {
+ class InspectorArray;
+
class ScriptCallStack : public Noncopyable {
public:
ScriptCallStack(JSC::ExecState*, unsigned skipArgumentCount = 0);
@@ -54,7 +57,7 @@ namespace WebCore {
// frame retrieval methods
const ScriptCallFrame &at(unsigned);
unsigned size();
- static bool stackTrace(int, ScriptState*, ScriptArray&);
+ static bool stackTrace(int, const RefPtr<InspectorArray>&);
private:
void initialize();
diff --git a/WebCore/bindings/js/ScriptController.h b/WebCore/bindings/js/ScriptController.h
index 0debf39..c382a93 100644
--- a/WebCore/bindings/js/ScriptController.h
+++ b/WebCore/bindings/js/ScriptController.h
@@ -23,6 +23,7 @@
#define ScriptController_h
#include "JSDOMWindowShell.h"
+#include "ScriptControllerBase.h"
#include "ScriptInstance.h"
#include <runtime/Protect.h>
#include <wtf/RefPtr.h>
@@ -62,17 +63,6 @@ class XSSAuditor;
typedef HashMap<void*, RefPtr<JSC::Bindings::RootObject> > RootObjectMap;
-enum ReasonForCallingCanExecuteScripts {
- AboutToExecuteScript,
- NotAboutToExecuteScript
-};
-
-// Whether to call the XSSAuditor to audit a script before passing it to the JavaScript engine.
-enum ShouldAllowXSS {
- AllowXSS,
- DoNotAllowXSS
-};
-
class ScriptController {
friend class ScriptCachedFrameData;
typedef WTF::HashMap< RefPtr<DOMWrapperWorld>, JSC::ProtectedPtr<JSDOMWindowShell> > ShellMap;
diff --git a/WebCore/bindings/js/ScriptDebugServer.cpp b/WebCore/bindings/js/ScriptDebugServer.cpp
index d1b5112..0a40f13 100644
--- a/WebCore/bindings/js/ScriptDebugServer.cpp
+++ b/WebCore/bindings/js/ScriptDebugServer.cpp
@@ -568,7 +568,11 @@ void ScriptDebugServer::recompileAllJSFunctionsSoon()
void ScriptDebugServer::recompileAllJSFunctions(Timer<ScriptDebugServer>*)
{
JSLock lock(SilenceAssertionsOnly);
- Debugger::recompileAllJSFunctions(JSDOMWindow::commonJSGlobalData());
+ // If JavaScript stack is not empty postpone recompilation.
+ if (JSDOMWindow::commonJSGlobalData()->dynamicGlobalObject)
+ recompileAllJSFunctionsSoon();
+ else
+ Debugger::recompileAllJSFunctions(JSDOMWindow::commonJSGlobalData());
}
void ScriptDebugServer::didAddListener(Page* page)
diff --git a/WebCore/bindings/js/ScriptEventListener.cpp b/WebCore/bindings/js/ScriptEventListener.cpp
index 467f16b..d2baf82 100644
--- a/WebCore/bindings/js/ScriptEventListener.cpp
+++ b/WebCore/bindings/js/ScriptEventListener.cpp
@@ -105,18 +105,18 @@ PassRefPtr<JSLazyEventListener> createAttributeEventListener(Frame* frame, Attri
return JSLazyEventListener::create(attr->localName().string(), eventParameterName(frame->document()->isSVGDocument()), attr->value(), 0, sourceURL, lineNumber, wrapper, mainThreadNormalWorld());
}
-String eventListenerHandlerBody(ScriptExecutionContext* context, ScriptState* scriptState, EventListener* eventListener)
+String eventListenerHandlerBody(Document* document, EventListener* eventListener)
{
const JSEventListener* jsListener = JSEventListener::cast(eventListener);
if (!jsListener)
return "";
- JSC::JSObject* jsFunction = jsListener->jsFunction(context);
+ JSC::JSObject* jsFunction = jsListener->jsFunction(document);
if (!jsFunction)
return "";
- return ustringToString(jsFunction->toString(scriptState));
+ return ustringToString(jsFunction->toString(scriptStateFromNode(jsListener->isolatedWorld(), document)));
}
-bool eventListenerHandlerLocation(ScriptExecutionContext*, ScriptState*, EventListener*, String&, int&)
+bool eventListenerHandlerLocation(Document*, EventListener*, String&, int&)
{
// FIXME: Add support for getting function location.
return false;
diff --git a/WebCore/bindings/js/ScriptEventListener.h b/WebCore/bindings/js/ScriptEventListener.h
index f1f203c..f96f31e 100644
--- a/WebCore/bindings/js/ScriptEventListener.h
+++ b/WebCore/bindings/js/ScriptEventListener.h
@@ -45,8 +45,8 @@ namespace WebCore {
PassRefPtr<JSLazyEventListener> createAttributeEventListener(Node*, Attribute*);
PassRefPtr<JSLazyEventListener> createAttributeEventListener(Frame*, Attribute*);
- String eventListenerHandlerBody(ScriptExecutionContext*, ScriptState*, EventListener*);
- bool eventListenerHandlerLocation(ScriptExecutionContext*, ScriptState*, EventListener*, String& sourceName, int& lineNumber);
+ String eventListenerHandlerBody(Document*, EventListener*);
+ bool eventListenerHandlerLocation(Document*, EventListener*, String& sourceName, int& lineNumber);
} // namespace WebCore
#endif // ScriptEventListener_h
diff --git a/WebCore/bindings/scripts/CodeGenerator.pm b/WebCore/bindings/scripts/CodeGenerator.pm
index fbcee02..d106920 100644
--- a/WebCore/bindings/scripts/CodeGenerator.pm
+++ b/WebCore/bindings/scripts/CodeGenerator.pm
@@ -3,7 +3,7 @@
#
# Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org>
# Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
-# Copyright (C) 2007 Apple Inc. All rights reserved.
+# Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
#
# This library is free software; you can redistribute it and/or
@@ -83,6 +83,7 @@ sub new
$useLayerOnTop = shift;
$preprocessor = shift;
$writeDependencies = shift;
+ $verbose = shift;
bless($reference, $object);
return $reference;
@@ -103,10 +104,10 @@ sub ProcessDocument
$defines = shift;
my $ifaceName = "CodeGenerator" . $useGenerator;
+ require $ifaceName . ".pm";
# Dynamically load external code generation perl module
- require $ifaceName . ".pm";
- $codeGenerator = $ifaceName->new($object, $useOutputDir, $useLayerOnTop, $preprocessor, $writeDependencies);
+ $codeGenerator = $ifaceName->new($object, $useOutputDir, $useLayerOnTop, $preprocessor, $writeDependencies, $verbose);
unless (defined($codeGenerator)) {
my $classes = $useDocument->classes;
foreach my $class (@$classes) {
@@ -401,8 +402,7 @@ sub ContentAttributeName
{
my ($generator, $implIncludes, $interfaceName, $attribute) = @_;
- my $contentAttributeName = $attribute->signature->extendedAttributes->{"Reflect"}
- || $attribute->signature->extendedAttributes->{"ReflectURL"};
+ my $contentAttributeName = $attribute->signature->extendedAttributes->{"Reflect"};
return undef if !$contentAttributeName;
$contentAttributeName = lc $generator->AttributeNameForGetterAndSetter($attribute) if $contentAttributeName eq "1";
@@ -424,8 +424,12 @@ sub GetterExpressionPrefix
}
my $functionName;
- if ($attribute->signature->extendedAttributes->{"ReflectURL"}) {
- $functionName = "getURLAttribute";
+ if ($attribute->signature->extendedAttributes->{"URL"}) {
+ if ($attribute->signature->extendedAttributes->{"NonEmpty"}) {
+ $functionName = "getNonEmptyURLAttribute";
+ } else {
+ $functionName = "getURLAttribute";
+ }
} elsif ($attribute->signature->type eq "boolean") {
$functionName = "hasAttribute";
} elsif ($attribute->signature->type eq "long") {
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 4c0cbe1..a0a2098 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -210,6 +210,11 @@ sub GetVisibleClassName
return "DOMException" if $className eq "DOMCoreException";
return "FormData" if $className eq "DOMFormData";
+ return "MimeType" if $className eq "DOMMimeType";
+ return "MimeTypeArray" if $className eq "DOMMimeTypeArray";
+ return "Plugin" if $className eq "DOMPlugin";
+ return "PluginArray" if $className eq "DOMPluginArray";
+
return $className;
}
@@ -2317,7 +2322,7 @@ sub JSValueToNative
return "static_cast<SVGPaint::SVGPaintType>($value.toInt32(exec))" if $type eq "SVGPaintType";
if ($type eq "DOMString") {
- return "valueToStringWithNullCheck(exec, $value)" if $signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"} || $signature->extendedAttributes->{"ReflectURL"};
+ return "valueToStringWithNullCheck(exec, $value)" if $signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"};
return "valueToStringWithUndefinedOrNullCheck(exec, $value)" if $signature->extendedAttributes->{"ConvertUndefinedOrNullToNullString"};
return "ustringToString($value.toString(exec))";
}
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 1ae0f8f..383bb74 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -675,7 +675,8 @@ END
END
} else {
my $reflect = $attribute->signature->extendedAttributes->{"Reflect"};
- if ($getterStringUsesImp && $reflect && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) {
+ my $url = $attribute->signature->extendedAttributes->{"URL"};
+ if ($getterStringUsesImp && $reflect && !$url && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) {
# Generate super-compact call for regular attribute getter:
my $contentAttributeName = $reflect eq "1" ? lc $attrName : $reflect;
my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName);
@@ -863,10 +864,9 @@ END
} else {
my $attrType = GetTypeFromSignature($attribute->signature);
my $reflect = $attribute->signature->extendedAttributes->{"Reflect"};
- my $reflectURL = $attribute->signature->extendedAttributes->{"ReflectURL"};
- if (($reflect || $reflectURL) && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) {
+ if ($reflect && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) {
# Generate super-compact call for regular attribute setter:
- my $contentAttributeName = ($reflect || $reflectURL) eq "1" ? lc $attrName : ($reflect || $reflectURL);
+ my $contentAttributeName = $reflect eq "1" ? lc $attrName : $reflect;
my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName);
$implIncludes{"${namespace}.h"} = 1;
push(@implContentDecls, " setElementStringAttr(info, ${namespace}::${contentAttributeName}Attr, value);\n");
@@ -2678,7 +2678,7 @@ sub GetNativeTypeFromSignature
my $mode = "";
if ($signature->extendedAttributes->{"ConvertUndefinedOrNullToNullString"}) {
$mode = "WithUndefinedOrNullCheck";
- } elsif ($signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"} || $signature->extendedAttributes->{"ReflectURL"}) {
+ } elsif ($signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"}) {
$mode = "WithNullCheck";
}
$type .= "<$mode>";
diff --git a/WebCore/bindings/scripts/IDLParser.pm b/WebCore/bindings/scripts/IDLParser.pm
index 3df96ab..e250a4d 100644
--- a/WebCore/bindings/scripts/IDLParser.pm
+++ b/WebCore/bindings/scripts/IDLParser.pm
@@ -259,7 +259,7 @@ sub ParseInterface
my @interfaceMethods = split(/;/, $interfaceData);
foreach my $line (@interfaceMethods) {
- if ($line =~ /attribute/) {
+ if ($line =~ /\Wattribute\W/) {
$line =~ /$IDLStructure::interfaceAttributeSelector/;
my $attributeType = (defined($1) ? $1 : die("Parsing error!\nSource:\n$line\n)"));
diff --git a/WebCore/bindings/scripts/InFilesParser.pm b/WebCore/bindings/scripts/InFilesParser.pm
index c6b3644..6539380 100644
--- a/WebCore/bindings/scripts/InFilesParser.pm
+++ b/WebCore/bindings/scripts/InFilesParser.pm
@@ -85,6 +85,10 @@ sub parse($)
my $perTagHandler = shift;
foreach (<$fileStream>) {
+ # Ignore whitespace, in case the .in files have the wrong EOL
+ # markers and those are getting treated as whitespace.
+ $_ = trimWS($_);
+
# Empty line, change from common parameter part
# to per tag part if we have started parsing.
if (/^$/) {
diff --git a/WebCore/bindings/scripts/generate-bindings.pl b/WebCore/bindings/scripts/generate-bindings.pl
index 44ed4d3..b293b3c 100755
--- a/WebCore/bindings/scripts/generate-bindings.pl
+++ b/WebCore/bindings/scripts/generate-bindings.pl
@@ -41,30 +41,36 @@ my @idlDirectories;
my $outputDirectory;
my $generator;
my $defines;
+my $prefix;
my $preprocessor;
my $writeDependencies;
+my $verbose;
GetOptions('include=s@' => \@idlDirectories,
'outputDir=s' => \$outputDirectory,
'generator=s' => \$generator,
'defines=s' => \$defines,
+ 'prefix=s' => \$prefix,
'preprocessor=s' => \$preprocessor,
+ 'verbose' => \$verbose,
'write-dependencies' => \$writeDependencies);
my $idlFile = $ARGV[0];
die('Must specify input file.') unless defined($idlFile);
-die('Must specify IDL search path.') unless @idlDirectories;
die('Must specify generator') unless defined($generator);
die('Must specify output directory.') unless defined($outputDirectory);
die('Must specify defines') unless defined($defines);
+if ($verbose) {
+ print "$generator: $idlFile\n";
+}
$defines =~ s/^\s+|\s+$//g; # trim whitespace
# Parse the given IDL file.
-my $parser = IDLParser->new(1);
+my $parser = IDLParser->new(!$verbose);
my $document = $parser->Parse($idlFile, $defines, $preprocessor);
# Generate desired output for given IDL file.
-my $codeGen = CodeGenerator->new(\@idlDirectories, $generator, $outputDirectory, 0, $preprocessor, $writeDependencies);
+my $codeGen = CodeGenerator->new(\@idlDirectories, $generator, $outputDirectory, 0, $preprocessor, $writeDependencies, $verbose);
$codeGen->ProcessDocument($document, $defines);
diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
index ee8afcf..179b301 100644
--- a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
+++ b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
@@ -240,6 +240,22 @@ void WebDOMTestObj::setReflectedURLAttr(const WebDOMString& newReflectedURLAttr)
impl()->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, newReflectedURLAttr);
}
+WebDOMString WebDOMTestObj::reflectedNonEmptyURLAttr() const
+{
+ if (!impl())
+ return WebDOMString();
+
+ return static_cast<const WebCore::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
+}
+
+void WebDOMTestObj::setReflectedNonEmptyURLAttr(const WebDOMString& newReflectedNonEmptyURLAttr)
+{
+ if (!impl())
+ return;
+
+ impl()->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, newReflectedNonEmptyURLAttr);
+}
+
WebDOMString WebDOMTestObj::reflectedStringAttr() const
{
if (!impl())
@@ -288,7 +304,7 @@ void WebDOMTestObj::setReflectedCustomBooleanAttr(bool newReflectedCustomBoolean
impl()->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, newReflectedCustomBooleanAttr);
}
-WebDOMString WebDOMTestObj::reflectedURLAttr() const
+WebDOMString WebDOMTestObj::reflectedCustomURLAttr() const
{
if (!impl())
return WebDOMString();
@@ -296,12 +312,28 @@ WebDOMString WebDOMTestObj::reflectedURLAttr() const
return static_cast<const WebCore::String&>(impl()->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
}
-void WebDOMTestObj::setReflectedURLAttr(const WebDOMString& newReflectedURLAttr)
+void WebDOMTestObj::setReflectedCustomURLAttr(const WebDOMString& newReflectedCustomURLAttr)
+{
+ if (!impl())
+ return;
+
+ impl()->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedCustomURLAttr);
+}
+
+WebDOMString WebDOMTestObj::reflectedCustomNonEmptyURLAttr() const
+{
+ if (!impl())
+ return WebDOMString();
+
+ return static_cast<const WebCore::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
+}
+
+void WebDOMTestObj::setReflectedCustomNonEmptyURLAttr(const WebDOMString& newReflectedCustomNonEmptyURLAttr)
{
if (!impl())
return;
- impl()->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedURLAttr);
+ impl()->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, newReflectedCustomNonEmptyURLAttr);
}
int WebDOMTestObj::attrWithGetterException() const
diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h
index cdd47ed..1eb5ed3 100644
--- a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h
+++ b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h
@@ -63,14 +63,18 @@ public:
void setReflectedBooleanAttr(bool);
WebDOMString reflectedURLAttr() const;
void setReflectedURLAttr(const WebDOMString&);
+ WebDOMString reflectedNonEmptyURLAttr() const;
+ void setReflectedNonEmptyURLAttr(const WebDOMString&);
WebDOMString reflectedStringAttr() const;
void setReflectedStringAttr(const WebDOMString&);
int reflectedCustomIntegralAttr() const;
void setReflectedCustomIntegralAttr(int);
bool reflectedCustomBooleanAttr() const;
void setReflectedCustomBooleanAttr(bool);
- WebDOMString reflectedURLAttr() const;
- void setReflectedURLAttr(const WebDOMString&);
+ WebDOMString reflectedCustomURLAttr() const;
+ void setReflectedCustomURLAttr(const WebDOMString&);
+ WebDOMString reflectedCustomNonEmptyURLAttr() const;
+ void setReflectedCustomNonEmptyURLAttr(const WebDOMString&);
int attrWithGetterException() const;
void setAttrWithGetterException(int);
int attrWithSetterException() const;
diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
index 3fcd3f7..b4b6787 100644
--- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
+++ b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
@@ -180,6 +180,7 @@ webkit_dom_test_obj_serialized_value(WebKitDOMTestObj* self, WebKitDOMSerialized
void
webkit_dom_test_obj_idb_key(WebKitDOMTestObj* self, WebKitDOMIDBKey* key)
{
+ WebCore::JSMainThreadNullState state;
g_return_if_fail(self);
WebCore::TestObj * item = WebKit::core(self);
g_return_if_fail(key);
@@ -555,6 +556,27 @@ webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar* value
}
gchar*
+webkit_dom_test_obj_get_reflected_non_empty_url_attr(WebKitDOMTestObj* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_val_if_fail(self, 0);
+ WebCore::TestObj * item = WebKit::core(self);
+ gchar* res = convertToUTF8String(item->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
+ return res;
+}
+
+void
+webkit_dom_test_obj_set_reflected_non_empty_url_attr(WebKitDOMTestObj* self, gchar* value)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_if_fail(self);
+ WebCore::TestObj * item = WebKit::core(self);
+ g_return_if_fail(value);
+ WebCore::String converted_value = WebCore::String::fromUTF8(value);
+ item->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, converted_value);
+}
+
+gchar*
webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self)
{
WebCore::JSMainThreadNullState state;
@@ -614,7 +636,7 @@ webkit_dom_test_obj_set_reflected_custom_boolean_attr(WebKitDOMTestObj* self, gb
}
gchar*
-webkit_dom_test_obj_get_reflected_url_attr(WebKitDOMTestObj* self)
+webkit_dom_test_obj_get_reflected_custom_url_attr(WebKitDOMTestObj* self)
{
WebCore::JSMainThreadNullState state;
g_return_val_if_fail(self, 0);
@@ -624,7 +646,7 @@ webkit_dom_test_obj_get_reflected_url_attr(WebKitDOMTestObj* self)
}
void
-webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar* value)
+webkit_dom_test_obj_set_reflected_custom_url_attr(WebKitDOMTestObj* self, gchar* value)
{
WebCore::JSMainThreadNullState state;
g_return_if_fail(self);
@@ -634,6 +656,27 @@ webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar* value
item->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, converted_value);
}
+gchar*
+webkit_dom_test_obj_get_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_val_if_fail(self, 0);
+ WebCore::TestObj * item = WebKit::core(self);
+ gchar* res = convertToUTF8String(item->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
+ return res;
+}
+
+void
+webkit_dom_test_obj_set_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self, gchar* value)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_if_fail(self);
+ WebCore::TestObj * item = WebKit::core(self);
+ g_return_if_fail(value);
+ WebCore::String converted_value = WebCore::String::fromUTF8(value);
+ item->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, converted_value);
+}
+
glong
webkit_dom_test_obj_get_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error)
{
@@ -893,10 +936,12 @@ enum {
PROP_REFLECTED_INTEGRAL_ATTR,
PROP_REFLECTED_BOOLEAN_ATTR,
PROP_REFLECTED_URL_ATTR,
+ PROP_REFLECTED_NON_EMPTY_URL_ATTR,
PROP_REFLECTED_STRING_ATTR,
PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR,
PROP_REFLECTED_CUSTOM_BOOLEAN_ATTR,
- PROP_REFLECTED_URL_ATTR,
+ PROP_REFLECTED_CUSTOM_URL_ATTR,
+ PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR,
PROP_ATTR_WITH_GETTER_EXCEPTION,
PROP_ATTR_WITH_SETTER_EXCEPTION,
PROP_STRING_ATTR_WITH_GETTER_EXCEPTION,
@@ -975,6 +1020,11 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
coreSelf->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
break;
}
+ case PROP_REFLECTED_NON_EMPTY_URL_ATTR:
+ {
+ coreSelf->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+ break;
+ }
case PROP_REFLECTED_STRING_ATTR:
{
coreSelf->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
@@ -990,11 +1040,16 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
coreSelf->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, (g_value_get_boolean(value)));
break;
}
- case PROP_REFLECTED_URL_ATTR:
+ case PROP_REFLECTED_CUSTOM_URL_ATTR:
{
coreSelf->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
break;
}
+ case PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR:
+ {
+ coreSelf->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+ break;
+ }
case PROP_ATTR_WITH_GETTER_EXCEPTION:
{
WebCore::ExceptionCode ec = 0;
@@ -1120,6 +1175,11 @@ static void webkit_dom_test_obj_get_property(GObject* object, guint prop_id, GVa
g_value_take_string(value, convertToUTF8String(coreSelf->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr)));
break;
}
+ case PROP_REFLECTED_NON_EMPTY_URL_ATTR:
+ {
+ g_value_take_string(value, convertToUTF8String(coreSelf->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr)));
+ break;
+ }
case PROP_REFLECTED_STRING_ATTR:
{
g_value_take_string(value, convertToUTF8String(coreSelf->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr)));
@@ -1135,11 +1195,16 @@ static void webkit_dom_test_obj_get_property(GObject* object, guint prop_id, GVa
g_value_set_boolean(value, coreSelf->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr));
break;
}
- case PROP_REFLECTED_URL_ATTR:
+ case PROP_REFLECTED_CUSTOM_URL_ATTR:
{
g_value_take_string(value, convertToUTF8String(coreSelf->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr)));
break;
}
+ case PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR:
+ {
+ g_value_take_string(value, convertToUTF8String(coreSelf->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr)));
+ break;
+ }
case PROP_ATTR_WITH_GETTER_EXCEPTION:
{
WebCore::ExceptionCode ec = 0;
@@ -1320,6 +1385,13 @@ G_MAXLONG, /* max */
"", /* default */
WEBKIT_PARAM_READWRITE));
g_object_class_install_property(gobjectClass,
+ PROP_REFLECTED_NON_EMPTY_URL_ATTR,
+ g_param_spec_string("reflected-non-empty-url-attr", /* name */
+ "test_obj_reflected-non-empty-url-attr", /* short description */
+ "read-write gchar* TestObj.reflected-non-empty-url-attr", /* longer - could do with some extra doc stuff here */
+ "", /* default */
+ WEBKIT_PARAM_READWRITE));
+ g_object_class_install_property(gobjectClass,
PROP_REFLECTED_STRING_ATTR,
g_param_spec_string("reflected-string-attr", /* name */
"test_obj_reflected-string-attr", /* short description */
@@ -1343,10 +1415,17 @@ G_MAXLONG, /* max */
FALSE, /* default */
WEBKIT_PARAM_READWRITE));
g_object_class_install_property(gobjectClass,
- PROP_REFLECTED_URL_ATTR,
- g_param_spec_string("reflected-url-attr", /* name */
- "test_obj_reflected-url-attr", /* short description */
- "read-write gchar* TestObj.reflected-url-attr", /* longer - could do with some extra doc stuff here */
+ PROP_REFLECTED_CUSTOM_URL_ATTR,
+ g_param_spec_string("reflected-custom-url-attr", /* name */
+ "test_obj_reflected-custom-url-attr", /* short description */
+ "read-write gchar* TestObj.reflected-custom-url-attr", /* longer - could do with some extra doc stuff here */
+ "", /* default */
+ WEBKIT_PARAM_READWRITE));
+ g_object_class_install_property(gobjectClass,
+ PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR,
+ g_param_spec_string("reflected-custom-non-empty-url-attr", /* name */
+ "test_obj_reflected-custom-non-empty-url-attr", /* short description */
+ "read-write gchar* TestObj.reflected-custom-non-empty-url-attr", /* longer - could do with some extra doc stuff here */
"", /* default */
WEBKIT_PARAM_READWRITE));
g_object_class_install_property(gobjectClass,
diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h
index 61c3d95..baf278c 100644
--- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h
+++ b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h
@@ -188,6 +188,12 @@ WEBKIT_API void
webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar* value);
WEBKIT_API gchar*
+webkit_dom_test_obj_get_reflected_non_empty_url_attr(WebKitDOMTestObj* self);
+
+WEBKIT_API void
+webkit_dom_test_obj_set_reflected_non_empty_url_attr(WebKitDOMTestObj* self, gchar* value);
+
+WEBKIT_API gchar*
webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self);
WEBKIT_API void
@@ -206,10 +212,16 @@ WEBKIT_API void
webkit_dom_test_obj_set_reflected_custom_boolean_attr(WebKitDOMTestObj* self, gboolean value);
WEBKIT_API gchar*
-webkit_dom_test_obj_get_reflected_url_attr(WebKitDOMTestObj* self);
+webkit_dom_test_obj_get_reflected_custom_url_attr(WebKitDOMTestObj* self);
WEBKIT_API void
-webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar* value);
+webkit_dom_test_obj_set_reflected_custom_url_attr(WebKitDOMTestObj* self, gchar* value);
+
+WEBKIT_API gchar*
+webkit_dom_test_obj_get_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self);
+
+WEBKIT_API void
+webkit_dom_test_obj_set_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self, gchar* value);
WEBKIT_API glong
webkit_dom_test_obj_get_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error);
diff --git a/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
index 31a3f70..2f561f9 100644
--- a/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
+++ b/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
@@ -49,7 +49,7 @@ ASSERT_CLASS_FITS_IN_CELL(JSTestObj);
#define THUNK_GENERATOR(generator)
#endif
-static const HashTableValue JSTestObjTableValues[30] =
+static const HashTableValue JSTestObjTableValues[32] =
{
{ "readOnlyIntAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyIntAttr), (intptr_t)0 THUNK_GENERATOR(0) },
{ "readOnlyStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t)0 THUNK_GENERATOR(0) },
@@ -63,10 +63,12 @@ static const HashTableValue JSTestObjTableValues[30] =
{ "reflectedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t)setJSTestObjReflectedIntegralAttr THUNK_GENERATOR(0) },
{ "reflectedBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t)setJSTestObjReflectedBooleanAttr THUNK_GENERATOR(0) },
{ "reflectedURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t)setJSTestObjReflectedURLAttr THUNK_GENERATOR(0) },
+ { "reflectedNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedNonEmptyURLAttr THUNK_GENERATOR(0) },
{ "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) },
{ "reflectedCustomIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t)setJSTestObjReflectedCustomIntegralAttr THUNK_GENERATOR(0) },
{ "reflectedCustomBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t)setJSTestObjReflectedCustomBooleanAttr THUNK_GENERATOR(0) },
- { "reflectedURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t)setJSTestObjReflectedURLAttr THUNK_GENERATOR(0) },
+ { "reflectedCustomURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t)setJSTestObjReflectedCustomURLAttr THUNK_GENERATOR(0) },
+ { "reflectedCustomNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedCustomNonEmptyURLAttr THUNK_GENERATOR(0) },
{ "attrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithGetterException), (intptr_t)setJSTestObjAttrWithGetterException THUNK_GENERATOR(0) },
{ "attrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithSetterException), (intptr_t)setJSTestObjAttrWithSetterException THUNK_GENERATOR(0) },
{ "stringAttrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t)setJSTestObjStringAttrWithGetterException THUNK_GENERATOR(0) },
@@ -90,7 +92,7 @@ static const HashTableValue JSTestObjTableValues[30] =
};
#undef THUNK_GENERATOR
-static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 69, 63, JSTestObjTableValues, 0 };
+static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 68, 63, JSTestObjTableValues, 0 };
/* Hash table for constructor */
#if ENABLE(JIT)
#define THUNK_GENERATOR(generator) , generator
@@ -336,6 +338,15 @@ JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Ident
return result;
}
+JSValue jsTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
+{
+ JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
+ UNUSED_PARAM(exec);
+ TestObj* imp = static_cast<TestObj*>(castedThis->impl());
+ JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
+ return result;
+}
+
JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
@@ -363,7 +374,7 @@ JSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSValue slotBase, c
return result;
}
-JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
+JSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
UNUSED_PARAM(exec);
@@ -372,6 +383,15 @@ JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Ident
return result;
}
+JSValue jsTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
+{
+ JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
+ UNUSED_PARAM(exec);
+ TestObj* imp = static_cast<TestObj*>(castedThis->impl());
+ JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
+ return result;
+}
+
JSValue jsTestObjAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
@@ -558,6 +578,13 @@ void setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* thisObject, JSValue
imp->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, valueToStringWithNullCheck(exec, value));
}
+void setJSTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
+{
+ JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
+ TestObj* imp = static_cast<TestObj*>(castedThis->impl());
+ imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, valueToStringWithNullCheck(exec, value));
+}
+
void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
@@ -579,13 +606,20 @@ void setJSTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* thisObjec
imp->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, value.toBoolean(exec));
}
-void setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
+void setJSTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
TestObj* imp = static_cast<TestObj*>(castedThis->impl());
imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, valueToStringWithNullCheck(exec, value));
}
+void setJSTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
+{
+ JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
+ TestObj* imp = static_cast<TestObj*>(castedThis->impl());
+ imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, valueToStringWithNullCheck(exec, value));
+}
+
void setJSTestObjAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value)
{
JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
diff --git a/WebCore/bindings/scripts/test/JS/JSTestObj.h b/WebCore/bindings/scripts/test/JS/JSTestObj.h
index 4dea3d2..c83e568 100644
--- a/WebCore/bindings/scripts/test/JS/JSTestObj.h
+++ b/WebCore/bindings/scripts/test/JS/JSTestObj.h
@@ -139,14 +139,18 @@ JSC::JSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSValue, const
void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
+JSC::JSValue jsTestObjReflectedNonEmptyURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
+void setJSTestObjReflectedNonEmptyURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
-JSC::JSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
-void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
+JSC::JSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
+void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
+JSC::JSValue jsTestObjReflectedCustomNonEmptyURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
+void setJSTestObjReflectedCustomNonEmptyURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h
index d38dece..1eac990 100644
--- a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h
+++ b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h
@@ -56,14 +56,18 @@
- (void)setReflectedBooleanAttr:(BOOL)newReflectedBooleanAttr;
- (NSString *)reflectedURLAttr;
- (void)setReflectedURLAttr:(NSString *)newReflectedURLAttr;
+- (NSString *)reflectedNonEmptyURLAttr;
+- (void)setReflectedNonEmptyURLAttr:(NSString *)newReflectedNonEmptyURLAttr;
- (NSString *)reflectedStringAttr;
- (void)setReflectedStringAttr:(NSString *)newReflectedStringAttr;
- (int)reflectedCustomIntegralAttr;
- (void)setReflectedCustomIntegralAttr:(int)newReflectedCustomIntegralAttr;
- (BOOL)reflectedCustomBooleanAttr;
- (void)setReflectedCustomBooleanAttr:(BOOL)newReflectedCustomBooleanAttr;
-- (NSString *)reflectedURLAttr;
-- (void)setReflectedURLAttr:(NSString *)newReflectedURLAttr;
+- (NSString *)reflectedCustomURLAttr;
+- (void)setReflectedCustomURLAttr:(NSString *)newReflectedCustomURLAttr;
+- (NSString *)reflectedCustomNonEmptyURLAttr;
+- (void)setReflectedCustomNonEmptyURLAttr:(NSString *)newReflectedCustomNonEmptyURLAttr;
- (int)attrWithGetterException;
- (void)setAttrWithGetterException:(int)newAttrWithGetterException;
- (int)attrWithSetterException;
diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
index d71cb05..99c3cc6 100644
--- a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
+++ b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
@@ -202,6 +202,18 @@
IMPL->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, newReflectedURLAttr);
}
+- (NSString *)reflectedNonEmptyURLAttr
+{
+ WebCore::JSMainThreadNullState state;
+ return IMPL->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr);
+}
+
+- (void)setReflectedNonEmptyURLAttr:(NSString *)newReflectedNonEmptyURLAttr
+{
+ WebCore::JSMainThreadNullState state;
+ IMPL->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, newReflectedNonEmptyURLAttr);
+}
+
- (NSString *)reflectedStringAttr
{
WebCore::JSMainThreadNullState state;
@@ -238,16 +250,28 @@
IMPL->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, newReflectedCustomBooleanAttr);
}
-- (NSString *)reflectedURLAttr
+- (NSString *)reflectedCustomURLAttr
{
WebCore::JSMainThreadNullState state;
return IMPL->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr);
}
-- (void)setReflectedURLAttr:(NSString *)newReflectedURLAttr
+- (void)setReflectedCustomURLAttr:(NSString *)newReflectedCustomURLAttr
+{
+ WebCore::JSMainThreadNullState state;
+ IMPL->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedCustomURLAttr);
+}
+
+- (NSString *)reflectedCustomNonEmptyURLAttr
+{
+ WebCore::JSMainThreadNullState state;
+ return IMPL->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr);
+}
+
+- (void)setReflectedCustomNonEmptyURLAttr:(NSString *)newReflectedCustomNonEmptyURLAttr
{
WebCore::JSMainThreadNullState state;
- IMPL->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedURLAttr);
+ IMPL->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, newReflectedCustomNonEmptyURLAttr);
}
- (int)attrWithGetterException
diff --git a/WebCore/bindings/scripts/test/TestObj.idl b/WebCore/bindings/scripts/test/TestObj.idl
index 3467116..43fc211 100644
--- a/WebCore/bindings/scripts/test/TestObj.idl
+++ b/WebCore/bindings/scripts/test/TestObj.idl
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary formstrArg, with or without
* modification, are permitted provided that the following conditions
@@ -44,11 +45,13 @@ module test {
attribute [Reflect] DOMString reflectedStringAttr;
attribute [Reflect] long reflectedIntegralAttr;
attribute [Reflect] boolean reflectedBooleanAttr;
- attribute [ReflectURL] DOMString reflectedURLAttr;
+ attribute [Reflect,URL] DOMString reflectedURLAttr;
+ attribute [Reflect,NonEmpty,URL] DOMString reflectedNonEmptyURLAttr;
attribute [Reflect=customContentStringAttr] DOMString reflectedStringAttr;
attribute [Reflect=customContentIntegralAttr] long reflectedCustomIntegralAttr;
attribute [Reflect=customContentBooleanAttr] boolean reflectedCustomBooleanAttr;
- attribute [ReflectURL=customContentURLAttr] DOMString reflectedURLAttr;
+ attribute [Reflect=customContentURLAttr,URL] DOMString reflectedCustomURLAttr;
+ attribute [Reflect=customContentNonEmptyURLAttr,NonEmpty,URL] DOMString reflectedCustomNonEmptyURLAttr;
// Methods
void voidMethod();
diff --git a/WebCore/bindings/scripts/test/V8/V8TestObj.cpp b/WebCore/bindings/scripts/test/V8/V8TestObj.cpp
index 1ad8a41..0b9d034 100644
--- a/WebCore/bindings/scripts/test/V8/V8TestObj.cpp
+++ b/WebCore/bindings/scripts/test/V8/V8TestObj.cpp
@@ -218,6 +218,22 @@ static void reflectedURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8:
return;
}
+static v8::Handle<v8::Value> reflectedNonEmptyURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ INC_STATS("DOM.TestObj.reflectedNonEmptyURLAttr._get");
+ TestObj* imp = V8TestObj::toNative(info.Holder());
+ return v8String(imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
+}
+
+static void reflectedNonEmptyURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
+{
+ INC_STATS("DOM.TestObj.reflectedNonEmptyURLAttr._set");
+ TestObj* imp = V8TestObj::toNative(info.Holder());
+ V8Parameter<WithNullCheck> v = value;
+ imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, v);
+ return;
+}
+
static v8::Handle<v8::Value> reflectedStringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
INC_STATS("DOM.TestObj.reflectedStringAttr._get");
@@ -266,22 +282,38 @@ static void reflectedCustomBooleanAttrAttrSetter(v8::Local<v8::String> name, v8:
return;
}
-static v8::Handle<v8::Value> reflectedURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+static v8::Handle<v8::Value> reflectedCustomURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
- INC_STATS("DOM.TestObj.reflectedURLAttr._get");
+ INC_STATS("DOM.TestObj.reflectedCustomURLAttr._get");
TestObj* imp = V8TestObj::toNative(info.Holder());
return v8String(imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
}
-static void reflectedURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
+static void reflectedCustomURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
{
- INC_STATS("DOM.TestObj.reflectedURLAttr._set");
+ INC_STATS("DOM.TestObj.reflectedCustomURLAttr._set");
TestObj* imp = V8TestObj::toNative(info.Holder());
V8Parameter<WithNullCheck> v = value;
imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, v);
return;
}
+static v8::Handle<v8::Value> reflectedCustomNonEmptyURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ INC_STATS("DOM.TestObj.reflectedCustomNonEmptyURLAttr._get");
+ TestObj* imp = V8TestObj::toNative(info.Holder());
+ return v8String(imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
+}
+
+static void reflectedCustomNonEmptyURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
+{
+ INC_STATS("DOM.TestObj.reflectedCustomNonEmptyURLAttr._set");
+ TestObj* imp = V8TestObj::toNative(info.Holder());
+ V8Parameter<WithNullCheck> v = value;
+ imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, v);
+ return;
+}
+
static v8::Handle<v8::Value> attrWithGetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
INC_STATS("DOM.TestObj.attrWithGetterException._get");
@@ -912,16 +944,20 @@ static const BatchedAttribute TestObjAttrs[] = {
{"reflectedIntegralAttr", TestObjInternal::reflectedIntegralAttrAttrGetter, TestObjInternal::reflectedIntegralAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'reflectedBooleanAttr' (Type: 'attribute' ExtAttr: 'Reflect')
{"reflectedBooleanAttr", TestObjInternal::reflectedBooleanAttrAttrGetter, TestObjInternal::reflectedBooleanAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
- // Attribute 'reflectedURLAttr' (Type: 'attribute' ExtAttr: 'ReflectURL')
+ // Attribute 'reflectedURLAttr' (Type: 'attribute' ExtAttr: 'URL Reflect')
{"reflectedURLAttr", TestObjInternal::reflectedURLAttrAttrGetter, TestObjInternal::reflectedURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
+ // Attribute 'reflectedNonEmptyURLAttr' (Type: 'attribute' ExtAttr: 'URL NonEmpty Reflect')
+ {"reflectedNonEmptyURLAttr", TestObjInternal::reflectedNonEmptyURLAttrAttrGetter, TestObjInternal::reflectedNonEmptyURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'reflectedStringAttr' (Type: 'attribute' ExtAttr: 'Reflect')
{"reflectedStringAttr", TestObjInternal::reflectedStringAttrAttrGetter, TestObjInternal::reflectedStringAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'reflectedCustomIntegralAttr' (Type: 'attribute' ExtAttr: 'Reflect')
{"reflectedCustomIntegralAttr", TestObjInternal::reflectedCustomIntegralAttrAttrGetter, TestObjInternal::reflectedCustomIntegralAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'reflectedCustomBooleanAttr' (Type: 'attribute' ExtAttr: 'Reflect')
{"reflectedCustomBooleanAttr", TestObjInternal::reflectedCustomBooleanAttrAttrGetter, TestObjInternal::reflectedCustomBooleanAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
- // Attribute 'reflectedURLAttr' (Type: 'attribute' ExtAttr: 'ReflectURL')
- {"reflectedURLAttr", TestObjInternal::reflectedURLAttrAttrGetter, TestObjInternal::reflectedURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
+ // Attribute 'reflectedCustomURLAttr' (Type: 'attribute' ExtAttr: 'URL Reflect')
+ {"reflectedCustomURLAttr", TestObjInternal::reflectedCustomURLAttrAttrGetter, TestObjInternal::reflectedCustomURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
+ // Attribute 'reflectedCustomNonEmptyURLAttr' (Type: 'attribute' ExtAttr: 'URL NonEmpty Reflect')
+ {"reflectedCustomNonEmptyURLAttr", TestObjInternal::reflectedCustomNonEmptyURLAttrAttrGetter, TestObjInternal::reflectedCustomNonEmptyURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'attrWithGetterException' (Type: 'attribute' ExtAttr: '')
{"attrWithGetterException", TestObjInternal::attrWithGetterExceptionAttrGetter, TestObjInternal::attrWithGetterExceptionAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
// Attribute 'attrWithSetterException' (Type: 'attribute' ExtAttr: '')
diff --git a/WebCore/bindings/v8/IDBBindingUtilities.cpp b/WebCore/bindings/v8/IDBBindingUtilities.cpp
index 2f977e0..4b38a61 100644
--- a/WebCore/bindings/v8/IDBBindingUtilities.cpp
+++ b/WebCore/bindings/v8/IDBBindingUtilities.cpp
@@ -26,11 +26,11 @@
#include "config.h"
#include "IDBBindingUtilities.h"
+#if ENABLE(INDEXED_DATABASE)
+
#include "IDBKey.h"
#include "V8Binding.h"
-#if ENABLE(INDEXED_DATABASE)
-
namespace WebCore {
PassRefPtr<IDBKey> createIDBKeyFromValue(v8::Handle<v8::Value> value)
diff --git a/WebCore/bindings/v8/IDBBindingUtilities.h b/WebCore/bindings/v8/IDBBindingUtilities.h
index 04e5c29..76f2bba 100644
--- a/WebCore/bindings/v8/IDBBindingUtilities.h
+++ b/WebCore/bindings/v8/IDBBindingUtilities.h
@@ -26,11 +26,11 @@
#ifndef IDBBindingUtilities_h
#define IDBBindingUtilities_h
-#include <v8.h>
-#include <wtf/PassRefPtr.h>
-
#if ENABLE(INDEXED_DATABASE)
+#include <v8.h>
+#include <wtf/Forward.h>
+
namespace WebCore {
class IDBKey;
diff --git a/WebCore/bindings/v8/ScriptCallStack.cpp b/WebCore/bindings/v8/ScriptCallStack.cpp
index 89809b2..cdc9662 100644
--- a/WebCore/bindings/v8/ScriptCallStack.cpp
+++ b/WebCore/bindings/v8/ScriptCallStack.cpp
@@ -31,6 +31,7 @@
#include "config.h"
#include "ScriptCallStack.h"
+#include "InspectorValues.h"
#include "ScriptScope.h"
#include "ScriptController.h"
#include "ScriptDebugServer.h"
@@ -93,13 +94,30 @@ const ScriptCallFrame& ScriptCallStack::at(unsigned index) const
return m_lastCaller;
}
-bool ScriptCallStack::stackTrace(int frameLimit, ScriptState* state, ScriptArray& stackTrace)
+bool ScriptCallStack::stackTrace(int frameLimit, const RefPtr<InspectorArray>& stackTrace)
{
- ScriptScope scope(state);
+ if (!v8::Context::InContext())
+ return false;
+ v8::Handle<v8::Context> context = v8::Context::GetCurrent();
+ if (context.IsEmpty())
+ return false;
+ v8::HandleScope scope;
+ v8::Context::Scope contextScope(context);
v8::Handle<v8::StackTrace> trace(v8::StackTrace::CurrentStackTrace(frameLimit));
- if (trace.IsEmpty() || !trace->GetFrameCount())
+ int frameCount = trace->GetFrameCount();
+ if (trace.IsEmpty() || !frameCount)
return false;
- stackTrace = ScriptArray(state, trace->AsArray());
+ for (int i = 0; i < frameCount; ++i) {
+ v8::Handle<v8::StackFrame> frame = trace->GetFrame(i);
+ RefPtr<InspectorObject> frameObject = InspectorObject::create();
+ v8::Local<v8::String> scriptName = frame->GetScriptName();
+ frameObject->setString("scriptName", scriptName.IsEmpty() ? "" : toWebCoreString(scriptName));
+ v8::Local<v8::String> functionName = frame->GetFunctionName();
+ frameObject->setString("functionName", functionName.IsEmpty() ? "" : toWebCoreString(functionName));
+ frameObject->setNumber("lineNumber", frame->GetLineNumber());
+ frameObject->setNumber("column", frame->GetColumn());
+ stackTrace->push(frameObject);
+ }
return true;
}
diff --git a/WebCore/bindings/v8/ScriptCallStack.h b/WebCore/bindings/v8/ScriptCallStack.h
index 8b02814..80d5f76 100644
--- a/WebCore/bindings/v8/ScriptCallStack.h
+++ b/WebCore/bindings/v8/ScriptCallStack.h
@@ -36,6 +36,7 @@
#include "ScriptState.h"
#include "ScriptValue.h"
#include <wtf/Noncopyable.h>
+#include <wtf/RefPtr.h>
namespace v8 {
class Arguments;
@@ -43,6 +44,8 @@ namespace v8 {
namespace WebCore {
+class InspectorArray;
+
class ScriptCallStack : public Noncopyable {
public:
static ScriptCallStack* create(const v8::Arguments&, unsigned skipArgumentCount = 0);
@@ -57,7 +60,7 @@ public:
// lineNumber: <1 based line number>
// column: <1 based column offset on the line>
// }
- static bool stackTrace(int frameLimit, ScriptState* state, ScriptArray& stackTrace);
+ static bool stackTrace(int frameLimit, const RefPtr<InspectorArray>& stackTrace);
const ScriptCallFrame& at(unsigned) const;
// FIXME: implement retrieving and storing call stack trace
diff --git a/WebCore/bindings/v8/ScriptController.cpp b/WebCore/bindings/v8/ScriptController.cpp
index 889642f..2396de0 100644
--- a/WebCore/bindings/v8/ScriptController.cpp
+++ b/WebCore/bindings/v8/ScriptController.cpp
@@ -290,13 +290,19 @@ void ScriptController::bindToWindowObject(Frame* frame, const String& key, NPObj
void ScriptController::collectGarbage()
{
v8::HandleScope handleScope;
- v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(m_proxy->frame());
+
+ v8::Persistent<v8::Context> v8Context = v8::Context::New();
if (v8Context.IsEmpty())
return;
-
- v8::Context::Scope scope(v8Context);
-
- m_proxy->evaluate(ScriptSourceCode("if (window.gc) void(gc());"), 0);
+ {
+ v8::Context::Scope scope(v8Context);
+ v8::Local<v8::String> source = v8::String::New("if (gc) gc();");
+ v8::Local<v8::String> name = v8::String::New("gc");
+ v8::Handle<v8::Script> script = v8::Script::Compile(source, name);
+ if (!script.IsEmpty())
+ script->Run();
+ }
+ v8Context.Dispose();
}
void ScriptController::lowMemoryNotification()
diff --git a/WebCore/bindings/v8/ScriptController.h b/WebCore/bindings/v8/ScriptController.h
index 3187180..75ae0bf 100644
--- a/WebCore/bindings/v8/ScriptController.h
+++ b/WebCore/bindings/v8/ScriptController.h
@@ -31,6 +31,7 @@
#ifndef ScriptController_h
#define ScriptController_h
+#include "ScriptControllerBase.h"
#include "ScriptInstance.h"
#include "ScriptValue.h"
@@ -55,17 +56,6 @@ class String;
class Widget;
class XSSAuditor;
-enum ReasonForCallingCanExecuteScripts {
- AboutToExecuteScript,
- NotAboutToExecuteScript
-};
-
-// Whether to call the XSSAuditor to audit a script before passing it to the JavaScript engine.
-enum ShouldAllowXSS {
- AllowXSS,
- DoNotAllowXSS
-};
-
class ScriptController {
public:
ScriptController(Frame*);
diff --git a/WebCore/bindings/v8/ScriptDebugServer.cpp b/WebCore/bindings/v8/ScriptDebugServer.cpp
index 8553ee5..138237b 100644
--- a/WebCore/bindings/v8/ScriptDebugServer.cpp
+++ b/WebCore/bindings/v8/ScriptDebugServer.cpp
@@ -356,6 +356,10 @@ void ScriptDebugServer::handleV8DebugEvent(const v8::Debug::EventDetails& eventD
if (!stackTrace->GetFrameCount())
return;
}
+
+ // Don't allow nested breaks.
+ if (m_pausedPage)
+ return;
m_executionState.set(eventDetails.GetExecutionState());
m_pausedPage = frame->page();
ScriptState* currentCallFrameState = mainWorldScriptState(frame);
diff --git a/WebCore/bindings/v8/ScriptEventListener.cpp b/WebCore/bindings/v8/ScriptEventListener.cpp
index 63e7dff..72df79d 100644
--- a/WebCore/bindings/v8/ScriptEventListener.cpp
+++ b/WebCore/bindings/v8/ScriptEventListener.cpp
@@ -100,28 +100,32 @@ PassRefPtr<V8LazyEventListener> createAttributeEventListener(Frame* frame, Attri
return V8LazyEventListener::create(attr->localName().string(), frame->document()->isSVGDocument(), attr->value(), sourceURL, lineNumber, columnNumber, WorldContextHandle(UseMainWorld));
}
-String eventListenerHandlerBody(ScriptExecutionContext* context, ScriptState* scriptState, EventListener* listener)
+String eventListenerHandlerBody(Document* document, EventListener* listener)
{
if (listener->type() != EventListener::JSEventListenerType)
return "";
- ScriptScope scope(scriptState);
+ v8::HandleScope scope;
V8AbstractEventListener* v8Listener = static_cast<V8AbstractEventListener*>(listener);
- v8::Handle<v8::Object> function = v8Listener->getListenerObject(context);
+ v8::Handle<v8::Context> context = toV8Context(document, v8Listener->worldContext());
+ v8::Context::Scope contextScope(context);
+ v8::Handle<v8::Object> function = v8Listener->getListenerObject(document);
if (function.IsEmpty())
return "";
return toWebCoreStringWithNullCheck(function);
}
-bool eventListenerHandlerLocation(ScriptExecutionContext* context, ScriptState* scriptState, EventListener* listener, String& sourceName, int& lineNumber)
+bool eventListenerHandlerLocation(Document* document, EventListener* listener, String& sourceName, int& lineNumber)
{
if (listener->type() != EventListener::JSEventListenerType)
return false;
- ScriptScope scope(scriptState);
+ v8::HandleScope scope;
V8AbstractEventListener* v8Listener = static_cast<V8AbstractEventListener*>(listener);
- v8::Handle<v8::Object> object = v8Listener->getListenerObject(context);
+ v8::Handle<v8::Context> context = toV8Context(document, v8Listener->worldContext());
+ v8::Context::Scope contextScope(context);
+ v8::Handle<v8::Object> object = v8Listener->getListenerObject(document);
if (object.IsEmpty() || !object->IsFunction())
return false;
diff --git a/WebCore/bindings/v8/ScriptEventListener.h b/WebCore/bindings/v8/ScriptEventListener.h
index 7815e29..0fce088 100644
--- a/WebCore/bindings/v8/ScriptEventListener.h
+++ b/WebCore/bindings/v8/ScriptEventListener.h
@@ -38,15 +38,15 @@
namespace WebCore {
class Attribute;
+ class Document;
class EventListener;
class Frame;
class Node;
- class ScriptState;
PassRefPtr<V8LazyEventListener> createAttributeEventListener(Node*, Attribute*);
PassRefPtr<V8LazyEventListener> createAttributeEventListener(Frame*, Attribute*);
- String eventListenerHandlerBody(ScriptExecutionContext*, ScriptState*, EventListener*);
- bool eventListenerHandlerLocation(ScriptExecutionContext*, ScriptState*, EventListener*, String& sourceName, int& lineNumber);
+ String eventListenerHandlerBody(Document*, EventListener*);
+ bool eventListenerHandlerLocation(Document*, EventListener*, String& sourceName, int& lineNumber);
} // namespace WebCore
diff --git a/WebCore/bindings/v8/ScriptSourceCode.h b/WebCore/bindings/v8/ScriptSourceCode.h
index dbc9d5e..485daea 100644
--- a/WebCore/bindings/v8/ScriptSourceCode.h
+++ b/WebCore/bindings/v8/ScriptSourceCode.h
@@ -46,6 +46,14 @@ public:
, m_url(url)
, m_startLine(startLine)
{
+ // FIXME: Copying the source to strip BOMs isn't strictly necessary
+ // because V8 treats BOMs as whitespace. However, it is here because it
+ // must be in sync with CachedScript::script() which strips the BOMs. We
+ // should investigate the performance implications.
+ if (m_source.length()) {
+ bool scratch = false;
+ m_source = String(source.impl()->copyStringWithoutBOMs(false, scratch));
+ }
}
// We lose the encoding information from CachedScript.
diff --git a/WebCore/bindings/v8/V8AbstractEventListener.h b/WebCore/bindings/v8/V8AbstractEventListener.h
index 0afbed5..4b36ffb 100644
--- a/WebCore/bindings/v8/V8AbstractEventListener.h
+++ b/WebCore/bindings/v8/V8AbstractEventListener.h
@@ -96,6 +96,8 @@ namespace WebCore {
// Dispose listener object and clear the handle.
void disposeListenerObject();
+ const WorldContextHandle& worldContext() const { return m_worldContext; }
+
protected:
V8AbstractEventListener(bool isAttribute, const WorldContextHandle& worldContext);
@@ -108,8 +110,6 @@ namespace WebCore {
// Get the receiver object to use for event listener call.
v8::Local<v8::Object> getReceiverObject(Event*);
- const WorldContextHandle& worldContext() const { return m_worldContext; }
-
private:
// Implementation of EventListener function.
virtual bool virtualisAttribute() const { return m_isAttribute; }
diff --git a/WebCore/bindings/v8/V8DOMWrapper.cpp b/WebCore/bindings/v8/V8DOMWrapper.cpp
index 596090d..b5703d2 100644
--- a/WebCore/bindings/v8/V8DOMWrapper.cpp
+++ b/WebCore/bindings/v8/V8DOMWrapper.cpp
@@ -224,8 +224,7 @@ PassRefPtr<NodeFilter> V8DOMWrapper::wrapNativeNodeFilter(v8::Handle<v8::Value>
if (!filter->IsFunction())
return 0;
- NodeFilterCondition* condition = new V8NodeFilterCondition(filter);
- return NodeFilter::create(condition);
+ return NodeFilter::create(V8NodeFilterCondition::create(filter));
}
static bool globalObjectPrototypeIsDOMWindow(v8::Handle<v8::Object> objectPrototype)
diff --git a/WebCore/bindings/v8/V8NodeFilterCondition.h b/WebCore/bindings/v8/V8NodeFilterCondition.h
index 5850b69..b864e5e 100644
--- a/WebCore/bindings/v8/V8NodeFilterCondition.h
+++ b/WebCore/bindings/v8/V8NodeFilterCondition.h
@@ -33,6 +33,7 @@
#include "NodeFilterCondition.h"
#include <v8.h>
+#include <wtf/PassRefPtr.h>
// NodeFilter is a JavaScript function that takes a Node as parameter and returns a short (ACCEPT, SKIP, REJECT) as the result.
namespace WebCore {
@@ -43,12 +44,18 @@ namespace WebCore {
// NodeFilterCondition is a wrapper around a NodeFilter JS function.
class V8NodeFilterCondition : public NodeFilterCondition {
public:
- explicit V8NodeFilterCondition(v8::Handle<v8::Value> filter);
+ static PassRefPtr<V8NodeFilterCondition> create(v8::Handle<v8::Value> filter)
+ {
+ return adoptRef(new V8NodeFilterCondition(filter));
+ }
+
virtual ~V8NodeFilterCondition();
virtual short acceptNode(ScriptState*, Node*) const;
private:
+ explicit V8NodeFilterCondition(v8::Handle<v8::Value> filter);
+
mutable v8::Persistent<v8::Value> m_filter;
};
diff --git a/WebCore/bindings/v8/V8Utilities.cpp b/WebCore/bindings/v8/V8Utilities.cpp
index ffccb06..f780218 100644
--- a/WebCore/bindings/v8/V8Utilities.cpp
+++ b/WebCore/bindings/v8/V8Utilities.cpp
@@ -100,10 +100,24 @@ bool processingUserGesture()
return frame && frame->script()->processingUserGesture();
}
+Frame* callingOrEnteredFrame()
+{
+ Frame* frame = V8Proxy::retrieveFrameForCallingContext();
+ if (!frame) {
+ // Unfortunately, when processing script from a plug-in, we might not
+ // have a calling context. In those cases, we fall back to the
+ // entered context for security checks.
+ // FIXME: We need a better API for retrieving frames that abstracts
+ // away this concern.
+ frame = V8Proxy::retrieveFrameForEnteredContext();
+ }
+ return frame;
+}
+
bool shouldAllowNavigation(Frame* frame)
{
- Frame* callingFrame = V8Proxy::retrieveFrameForCallingContext();
- return callingFrame && callingFrame->loader()->shouldAllowNavigation(frame);
+ Frame* callingOrEntered = callingOrEnteredFrame();
+ return callingOrEntered && callingOrEntered->loader()->shouldAllowNavigation(frame);
}
KURL completeURL(const String& relativeURL)
@@ -117,12 +131,11 @@ KURL completeURL(const String& relativeURL)
void navigateIfAllowed(Frame* frame, const KURL& url, bool lockHistory, bool lockBackForwardList)
{
- Frame* callingFrame = V8Proxy::retrieveFrameForCallingContext();
- if (!callingFrame)
+ Frame* callingOrEntered = callingOrEnteredFrame();
+ if (!callingOrEntered)
return;
-
if (!protocolIsJavaScript(url) || ScriptController::isSafeScript(frame))
- frame->redirectScheduler()->scheduleLocationChange(url.string(), callingFrame->loader()->outgoingReferrer(), lockHistory, lockBackForwardList, processingUserGesture());
+ frame->redirectScheduler()->scheduleLocationChange(url.string(), callingOrEntered->loader()->outgoingReferrer(), lockHistory, lockBackForwardList, processingUserGesture());
}
ScriptExecutionContext* getScriptExecutionContext()
diff --git a/WebCore/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp b/WebCore/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp
index 58a85dc..ef428a9 100644
--- a/WebCore/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp
@@ -52,8 +52,7 @@ static v8::Handle<v8::Value> getNamedItems(HTMLAllCollection* collection, Atomic
if (namedItems.size() == 1)
return toV8(namedItems.at(0).release());
- NodeList* list = new V8NamedNodesCollection(namedItems);
- return toV8(list);
+ return toV8(V8NamedNodesCollection::create(namedItems));
}
static v8::Handle<v8::Value> getItem(HTMLAllCollection* collection, v8::Handle<v8::Value> argument)
diff --git a/WebCore/bindings/v8/custom/V8HTMLCollectionCustom.cpp b/WebCore/bindings/v8/custom/V8HTMLCollectionCustom.cpp
index a4a0c57..9e89ce8 100644
--- a/WebCore/bindings/v8/custom/V8HTMLCollectionCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8HTMLCollectionCustom.cpp
@@ -52,8 +52,7 @@ static v8::Handle<v8::Value> getNamedItems(HTMLCollection* collection, AtomicStr
if (namedItems.size() == 1)
return toV8(namedItems.at(0).release());
- NodeList* list = new V8NamedNodesCollection(namedItems);
- return toV8(list);
+ return toV8(V8NamedNodesCollection::create(namedItems));
}
static v8::Handle<v8::Value> getItem(HTMLCollection* collection, v8::Handle<v8::Value> argument)
diff --git a/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp b/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp
index e6f1b8f..09f0a6f 100644
--- a/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp
@@ -51,20 +51,20 @@ namespace WebCore {
v8::Local<v8::Object> V8HTMLDocument::WrapInShadowObject(v8::Local<v8::Object> wrapper, Node* impl)
{
- DEFINE_STATIC_LOCAL(v8::Persistent<v8::Function>, shadowConstructor, ());
- if (shadowConstructor.IsEmpty()) {
- v8::Local<v8::FunctionTemplate> shadowTemplate = v8::FunctionTemplate::New();
+ DEFINE_STATIC_LOCAL(v8::Persistent<v8::FunctionTemplate>, shadowTemplate, ());
+ if (shadowTemplate.IsEmpty()) {
+ shadowTemplate = v8::Persistent<v8::FunctionTemplate>::New(v8::FunctionTemplate::New());
if (shadowTemplate.IsEmpty())
return v8::Local<v8::Object>();
shadowTemplate->SetClassName(v8::String::New("HTMLDocument"));
shadowTemplate->Inherit(V8HTMLDocument::GetTemplate());
shadowTemplate->InstanceTemplate()->SetInternalFieldCount(V8HTMLDocument::internalFieldCount);
- shadowConstructor = v8::Persistent<v8::Function>::New(shadowTemplate->GetFunction());
- if (shadowConstructor.IsEmpty())
- return v8::Local<v8::Object>();
}
- ASSERT(!shadowConstructor.IsEmpty());
+ v8::Local<v8::Function> shadowConstructor = shadowTemplate->GetFunction();
+ if (shadowConstructor.IsEmpty())
+ return v8::Local<v8::Object>();
+
v8::Local<v8::Object> shadow = shadowConstructor->NewInstance();
if (shadow.IsEmpty())
return v8::Local<v8::Object>();
diff --git a/WebCore/bindings/v8/custom/V8HTMLFormElementCustom.cpp b/WebCore/bindings/v8/custom/V8HTMLFormElementCustom.cpp
index 786a96a..9baf78a 100644
--- a/WebCore/bindings/v8/custom/V8HTMLFormElementCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8HTMLFormElementCustom.cpp
@@ -77,8 +77,7 @@ v8::Handle<v8::Value> V8HTMLFormElement::namedPropertyGetter(v8::Local<v8::Strin
if (elements.size() == 1)
return toV8(elements.at(0).release());
- NodeList* collection = new V8NamedNodesCollection(elements);
- return toV8(collection);
+ return toV8(V8NamedNodesCollection::create(elements));
}
} // namespace WebCore
diff --git a/WebCore/bindings/v8/custom/V8HTMLSelectElementCustom.cpp b/WebCore/bindings/v8/custom/V8HTMLSelectElementCustom.cpp
index d0d8dac..13a9d30 100644
--- a/WebCore/bindings/v8/custom/V8HTMLSelectElementCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8HTMLSelectElementCustom.cpp
@@ -70,8 +70,7 @@ v8::Handle<v8::Value> V8HTMLSelectElement::namedPropertyGetter(v8::Local<v8::Str
if (items.size() == 1)
return toV8(items.at(0).release());
- NodeList* list = new V8NamedNodesCollection(items);
- return toV8(list);
+ return toV8(V8NamedNodesCollection::create(items));
}
v8::Handle<v8::Value> V8HTMLSelectElement::indexedPropertyGetter(uint32_t index, const v8::AccessorInfo& info)
diff --git a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
index 5ef50a6..def1120 100644
--- a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
@@ -11,9 +11,6 @@
* 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
@@ -37,6 +34,7 @@
#include "SerializedScriptValue.h"
#include "V8IDBDatabaseRequest.h"
#include "V8IDBIndexRequest.h"
+#include "V8IDBKey.h"
#include "V8IDBObjectStoreRequest.h"
#include "V8IndexedDatabaseRequest.h"
@@ -56,6 +54,8 @@ v8::Handle<v8::Value> toV8(IDBAny* impl)
return toV8(impl->idbDatabaseRequest());
case IDBAny::IDBIndexRequestType:
return toV8(impl->idbIndexRequest());
+ case IDBAny::IDBKeyType:
+ return toV8(impl->idbKey());
case IDBAny::IDBObjectStoreRequestType:
return toV8(impl->idbObjectStoreRequest());
case IDBAny::IndexedDatabaseRequestType:
diff --git a/WebCore/bindings/v8/custom/V8NamedNodesCollection.h b/WebCore/bindings/v8/custom/V8NamedNodesCollection.h
index d13b7a8..0372de1 100644
--- a/WebCore/bindings/v8/custom/V8NamedNodesCollection.h
+++ b/WebCore/bindings/v8/custom/V8NamedNodesCollection.h
@@ -33,6 +33,7 @@
#include "Node.h"
#include "NodeList.h"
+#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
@@ -40,13 +41,19 @@ namespace WebCore {
class V8NamedNodesCollection : public NodeList {
public:
- explicit V8NamedNodesCollection(const Vector<RefPtr<Node> >& nodes)
- : m_nodes(nodes) { }
+ static PassRefPtr<NodeList> create(const Vector<RefPtr<Node> >& nodes)
+ {
+ return adoptRef(new V8NamedNodesCollection(nodes));
+ }
+
virtual unsigned length() const { return m_nodes.size(); }
virtual Node* item(unsigned) const;
virtual Node* itemWithName(const AtomicString&) const;
private:
+ explicit V8NamedNodesCollection(const Vector<RefPtr<Node> >& nodes)
+ : m_nodes(nodes) { }
+
Vector<RefPtr<Node> > m_nodes;
};
diff --git a/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp b/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
index e1a9c0e..fd6e120 100644
--- a/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
@@ -477,12 +477,12 @@ static v8::Handle<v8::Value> vertexAttribAndUniformHelperf(const v8::Arguments&
return v8::Undefined();
}
- v8::Handle<v8::Array> array =
- v8::Local<v8::Array>::Cast(args[1]);
- if (array.IsEmpty()) {
- V8Proxy::setDOMException(SYNTAX_ERR);
+ if (args[1].IsEmpty() || !args[1]->IsArray()) {
+ V8Proxy::throwTypeError();
return notHandledByInterceptor();
}
+ v8::Handle<v8::Array> array =
+ v8::Local<v8::Array>::Cast(args[1]);
uint32_t len = array->Length();
float* data = jsArrayToFloatArray(array, len);
if (!data) {
@@ -545,12 +545,12 @@ static v8::Handle<v8::Value> uniformHelperi(const v8::Arguments& args,
return v8::Undefined();
}
- v8::Handle<v8::Array> array =
- v8::Local<v8::Array>::Cast(args[1]);
- if (array.IsEmpty()) {
- V8Proxy::setDOMException(SYNTAX_ERR);
+ if (args[1].IsEmpty() || !args[1]->IsArray()) {
+ V8Proxy::throwTypeError();
return notHandledByInterceptor();
}
+ v8::Handle<v8::Array> array =
+ v8::Local<v8::Array>::Cast(args[1]);
uint32_t len = array->Length();
int* data = jsArrayToIntArray(array, len);
if (!data) {
@@ -658,12 +658,12 @@ static v8::Handle<v8::Value> uniformMatrixHelper(const v8::Arguments& args,
return v8::Undefined();
}
- v8::Handle<v8::Array> array =
- v8::Local<v8::Array>::Cast(args[2]);
- if (array.IsEmpty()) {
- V8Proxy::setDOMException(SYNTAX_ERR);
+ if (args[2].IsEmpty() || !args[2]->IsArray()) {
+ V8Proxy::throwTypeError();
return notHandledByInterceptor();
}
+ v8::Handle<v8::Array> array =
+ v8::Local<v8::Array>::Cast(args[2]);
uint32_t len = array->Length();
float* data = jsArrayToFloatArray(array, len);
if (!data) {
diff --git a/WebCore/bridge/jni/v8/JavaInstanceV8.cpp b/WebCore/bridge/jni/v8/JavaInstanceV8.cpp
index dd4750f..980bf91 100644
--- a/WebCore/bridge/jni/v8/JavaInstanceV8.cpp
+++ b/WebCore/bridge/jni/v8/JavaInstanceV8.cpp
@@ -32,11 +32,14 @@
#include "JavaClassV8.h"
#include <assert.h>
+<<<<<<< HEAD
// ANDROID
#define LOG_TAG "v8binding"
#include <utils/Log.h>
// END ANDROID
+=======
+>>>>>>> webkit.org at r63173
using namespace JSC::Bindings;
diff --git a/WebCore/bridge/qt/qt_instance.cpp b/WebCore/bridge/qt/qt_instance.cpp
index 1229919..3723ec0 100644
--- a/WebCore/bridge/qt/qt_instance.cpp
+++ b/WebCore/bridge/qt/qt_instance.cpp
@@ -192,6 +192,34 @@ void QtInstance::markAggregate(MarkStack& markStack)
if (val)
markStack.append(val);
}
+ foreach (QtField* field, m_fields.values()) {
+ bool mark = false;
+ if (field->fieldType() == QtField::MetaProperty)
+ mark = true;
+ else if (field->fieldType() == QtField::DynamicProperty) {
+ if (m_object && m_object->dynamicPropertyNames().indexOf(field->name()) >= 0)
+ mark = true;
+ } else if (m_object) {
+ QList<QObject*> children = m_object->children();
+ for (int index = 0; index < children.count(); ++index) {
+ QObject* child = children.at(index);
+ if (child->objectName().toLatin1() == field->name()) {
+ mark = true;
+ break;
+ }
+ }
+ }
+ if (mark) {
+ if (RefPtr<RootObject> ro = rootObject()) {
+ JSGlobalObject* globalobj = ro->globalObject();
+ if (globalobj) {
+ ExecState* exec = globalobj->globalExec();
+ JSValue val = field->valueFromInstance(exec, this);
+ markStack.append(val);
+ }
+ }
+ }
+ }
}
void QtInstance::begin()
diff --git a/WebCore/css/CSSComputedStyleDeclaration.cpp b/WebCore/css/CSSComputedStyleDeclaration.cpp
index 06779a9..c4ccdb3 100644
--- a/WebCore/css/CSSComputedStyleDeclaration.cpp
+++ b/WebCore/css/CSSComputedStyleDeclaration.cpp
@@ -691,9 +691,13 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper
if (!style)
return 0;
+<<<<<<< HEAD
#ifdef ANDROID_LAYOUT
const Settings * settings = node->document()->frame() ? node->document()->frame()->settings() : 0;
#endif
+=======
+ propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style->direction());
+>>>>>>> webkit.org at r63173
switch (static_cast<CSSPropertyID>(propertyID)) {
case CSSPropertyInvalid:
@@ -1480,6 +1484,14 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper
case CSSPropertyTextUnderlineWidth:
break;
+ /* Directional properties are resolved by resolveDirectionAwareProperty() before the switch. */
+ case CSSPropertyWebkitMarginEnd:
+ case CSSPropertyWebkitMarginStart:
+ case CSSPropertyWebkitPaddingEnd:
+ case CSSPropertyWebkitPaddingStart:
+ ASSERT_NOT_REACHED();
+ break;
+
/* Unimplemented @font-face properties */
case CSSPropertyFontStretch:
case CSSPropertySrc:
@@ -1505,13 +1517,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper
case CSSPropertyWebkitColumns:
case CSSPropertyWebkitColumnRule:
case CSSPropertyWebkitMarginCollapse:
- case CSSPropertyWebkitMarginStart:
case CSSPropertyWebkitMarquee:
case CSSPropertyWebkitMarqueeSpeed:
case CSSPropertyWebkitMask:
case CSSPropertyWebkitMaskRepeatX:
case CSSPropertyWebkitMaskRepeatY:
- case CSSPropertyWebkitPaddingStart:
case CSSPropertyWebkitPerspectiveOriginX:
case CSSPropertyWebkitPerspectiveOriginY:
case CSSPropertyWebkitTextStroke:
diff --git a/WebCore/css/CSSComputedStyleDeclaration.h b/WebCore/css/CSSComputedStyleDeclaration.h
index a2e8ba7..816d15a 100644
--- a/WebCore/css/CSSComputedStyleDeclaration.h
+++ b/WebCore/css/CSSComputedStyleDeclaration.h
@@ -22,14 +22,17 @@
#define CSSComputedStyleDeclaration_h
#include "CSSStyleDeclaration.h"
-#include "Node.h"
+#include "PlatformString.h"
#include "RenderStyleConstants.h"
+#include <wtf/RefPtr.h>
namespace WebCore {
class Color;
class CSSMutableStyleDeclaration;
class CSSPrimitiveValue;
+class Node;
+class RenderStyle;
class ShadowData;
enum EUpdateLayout { DoNotUpdateLayout = false, UpdateLayout = true };
diff --git a/WebCore/css/CSSFontFaceSource.cpp b/WebCore/css/CSSFontFaceSource.cpp
index 921b149..00dfcba 100644
--- a/WebCore/css/CSSFontFaceSource.cpp
+++ b/WebCore/css/CSSFontFaceSource.cpp
@@ -42,6 +42,7 @@
#include "HTMLNames.h"
#include "SVGFontData.h"
#include "SVGFontElement.h"
+#include "SVGFontFaceElement.h"
#include "SVGURIReference.h"
#endif
@@ -187,9 +188,10 @@ SimpleFontData* CSSFontFaceSource::getFontData(const FontDescription& fontDescri
fontData.set(new SimpleFontData(tempData->platformData(), true, true));
}
- m_fontDataTable.set(hashKey, fontData.get());
- return fontData.release();
-}
+ SimpleFontData* fontDataRawPtr = fontData.leakPtr();
+ m_fontDataTable.set(hashKey, fontDataRawPtr);
+ return fontDataRawPtr;
}
+}
diff --git a/WebCore/css/CSSFontFaceSource.h b/WebCore/css/CSSFontFaceSource.h
index c6baef2..278ba72 100644
--- a/WebCore/css/CSSFontFaceSource.h
+++ b/WebCore/css/CSSFontFaceSource.h
@@ -31,10 +31,6 @@
#include "CachedResourceHandle.h"
#include <wtf/HashMap.h>
-#if ENABLE(SVG_FONTS)
-#include "SVGFontFaceElement.h"
-#endif
-
namespace WebCore {
class CachedFont;
@@ -42,6 +38,11 @@ class CSSFontFace;
class CSSFontSelector;
class FontDescription;
class SimpleFontData;
+#if ENABLE(SVG_FONTS)
+class SVGFontElement;
+class SVGFontFaceElement;
+#endif
+
class CSSFontFaceSource : public CachedResourceClient {
public:
diff --git a/WebCore/css/CSSHelper.cpp b/WebCore/css/CSSHelper.cpp
index a0daebd..e0ce7c3 100644
--- a/WebCore/css/CSSHelper.cpp
+++ b/WebCore/css/CSSHelper.cpp
@@ -79,8 +79,10 @@ String deprecatedParseURL(const String& url)
// Optimize for the likely case there there is nothing to strip.
if (l == length) {
int k;
+ // If the URL has any control characters in it, we have to strip them.
+ // '\r' (ascii value 13) is the largest control character.
for (k = 0; k < length; k++) {
- if (characters[k] > '\r')
+ if (characters[k] <= '\r')
break;
}
if (k == length)
diff --git a/WebCore/css/CSSImportRule.idl b/WebCore/css/CSSImportRule.idl
index 8e60905..05654fe 100644
--- a/WebCore/css/CSSImportRule.idl
+++ b/WebCore/css/CSSImportRule.idl
@@ -23,7 +23,7 @@ module css {
// Introduced in DOM Level 2:
interface CSSImportRule : CSSRule {
readonly attribute [ConvertNullStringTo=Null] DOMString href;
- readonly attribute stylesheets::MediaList media;
+ readonly attribute MediaList media;
readonly attribute CSSStyleSheet styleSheet;
};
diff --git a/WebCore/css/CSSMediaRule.idl b/WebCore/css/CSSMediaRule.idl
index 813bd70..4b75f49 100644
--- a/WebCore/css/CSSMediaRule.idl
+++ b/WebCore/css/CSSMediaRule.idl
@@ -22,7 +22,7 @@ module css {
// Introduced in DOM Level 2:
interface CSSMediaRule : CSSRule {
- readonly attribute stylesheets::MediaList media;
+ readonly attribute MediaList media;
readonly attribute CSSRuleList cssRules;
[OldStyleObjC] unsigned long insertRule(in DOMString rule,
diff --git a/WebCore/css/CSSParser.cpp b/WebCore/css/CSSParser.cpp
index 087018b..be410b4 100644
--- a/WebCore/css/CSSParser.cpp
+++ b/WebCore/css/CSSParser.cpp
@@ -155,8 +155,8 @@ CSSParser::CSSParser(bool strictParsing)
, m_ruleRanges(0)
, m_data(0)
, yy_start(1)
- , m_line(0)
- , m_lastSelectorLine(0)
+ , m_lineNumber(0)
+ , m_lastSelectorLineNumber(0)
, m_allowImportRules(true)
, m_allowVariablesRules(true)
, m_allowNamespaceDeclarations(true)
@@ -235,7 +235,7 @@ void CSSParser::setupParser(const char* prefix, const String& string, const char
resetRuleBodyMarks();
}
-void CSSParser::parseSheet(CSSStyleSheet* sheet, const String& string, StyleRuleRanges* ruleRangeMap)
+void CSSParser::parseSheet(CSSStyleSheet* sheet, const String& string, int startLineNumber, StyleRuleRanges* ruleRangeMap)
{
#ifdef ANDROID_INSTRUMENT
android::TimeCounter::start(android::TimeCounter::CSSParseTimeCounter);
@@ -244,6 +244,7 @@ void CSSParser::parseSheet(CSSStyleSheet* sheet, const String& string, StyleRule
m_defaultNamespace = starAtom; // Reset the default namespace.
m_ruleRanges = ruleRangeMap;
+ m_lineNumber = startLineNumber;
setupParser("", string, "");
cssyyparse(this);
m_ruleRanges = 0;
@@ -318,21 +319,21 @@ bool CSSParser::parseValue(CSSMutableStyleDeclaration* declaration, int id, cons
// possible to set up a default color.
bool CSSParser::parseColor(RGBA32& color, const String& string, bool strict)
{
+ // First try creating a color specified by name, rgb() or "#" syntax.
+ if (parseColor(string, color, strict))
+ return true;
+
CSSParser parser(true);
+ RefPtr<CSSMutableStyleDeclaration> dummyStyleDeclaration = CSSMutableStyleDeclaration::create();
- // First try creating a color specified by name or the "#" syntax.
- if (!parser.parseColor(string, color, strict)) {
- RefPtr<CSSMutableStyleDeclaration> dummyStyleDeclaration = CSSMutableStyleDeclaration::create();
+ // Now try to create a color from rgba() syntax.
+ if (!parser.parseColor(dummyStyleDeclaration.get(), string))
+ return false;
- // Now try to create a color from the rgb() or rgba() syntax.
- if (parser.parseColor(dummyStyleDeclaration.get(), string)) {
- CSSValue* value = parser.m_parsedProperties[0]->value();
- if (value->cssValueType() == CSSValue::CSS_PRIMITIVE_VALUE) {
- CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
- color = primitiveValue->getRGBA32Value();
- }
- } else
- return false;
+ CSSValue* value = parser.m_parsedProperties[0]->value();
+ if (value->cssValueType() == CSSValue::CSS_PRIMITIVE_VALUE) {
+ CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
+ color = primitiveValue->getRGBA32Value();
}
return true;
@@ -439,9 +440,9 @@ void CSSParser::addProperty(int propId, PassRefPtr<CSSValue> value, bool importa
if (m_maxParsedProperties > UINT_MAX / sizeof(CSSProperty*))
return;
m_parsedProperties = static_cast<CSSProperty**>(fastRealloc(m_parsedProperties,
- m_maxParsedProperties * sizeof(CSSProperty*)));
+ m_maxParsedProperties * sizeof(CSSProperty*)));
}
- m_parsedProperties[m_numParsedProperties++] = prop.release();
+ m_parsedProperties[m_numParsedProperties++] = prop.leakPtr();
}
void CSSParser::rollbackLastProperties(int num)
@@ -1038,6 +1039,7 @@ bool CSSParser::parseValue(int propId, bool important)
case CSSPropertyPaddingBottom: // <length> | <percentage>
case CSSPropertyPaddingLeft: ////
case CSSPropertyWebkitPaddingStart:
+ case CSSPropertyWebkitPaddingEnd:
validPrimitive = (!id && validUnit(value, FLength | FPercent | FNonNeg, m_strict));
break;
@@ -1098,6 +1100,7 @@ bool CSSParser::parseValue(int propId, bool important)
case CSSPropertyMarginBottom: // <length> | <percentage> | auto | inherit
case CSSPropertyMarginLeft: ////
case CSSPropertyWebkitMarginStart:
+ case CSSPropertyWebkitMarginEnd:
if (id == CSSValueAuto)
validPrimitive = true;
else
@@ -3644,7 +3647,14 @@ bool CSSParser::parseFontFaceUnicodeRange()
{
RefPtr<CSSValueList> values = CSSValueList::createCommaSeparated();
bool failed = false;
- while (m_valueList->current()) {
+ bool operatorExpected = false;
+ for (; m_valueList->current(); m_valueList->next(), operatorExpected = !operatorExpected) {
+ if (operatorExpected) {
+ if (m_valueList->current()->unit == CSSParserValue::Operator && m_valueList->current()->iValue == ',')
+ continue;
+ failed = true;
+ break;
+ }
if (m_valueList->current()->unit != CSSPrimitiveValue::CSS_UNICODE_RANGE) {
failed = true;
break;
@@ -3719,7 +3729,6 @@ bool CSSParser::parseFontFaceUnicodeRange()
}
if (from <= to)
values->append(CSSUnicodeRangeValue::create(from, to));
- m_valueList->next();
}
if (failed || !values->length())
return false;
@@ -3768,13 +3777,23 @@ static inline bool parseColorInt(const UChar*& string, const UChar* end, UChar t
bool CSSParser::parseColor(const String &name, RGBA32& rgb, bool strict)
{
- if (!strict && Color::parseHexColor(name, rgb))
- return true;
+ const UChar* characters = name.characters();
+ unsigned length = name.length();
+
+ if (!strict && length >= 3) {
+ if (name[0] == '#') {
+ if (Color::parseHexColor(characters + 1, length - 1, rgb))
+ return true;
+ } else {
+ if (Color::parseHexColor(characters, length, rgb))
+ return true;
+ }
+ }
// Try rgb() syntax.
if (name.startsWith("rgb(")) {
- const UChar* current = name.characters() + 4;
- const UChar* end = name.characters() + name.length();
+ const UChar* current = characters + 4;
+ const UChar* end = characters + length;
int red;
int green;
int blue;
@@ -5167,7 +5186,7 @@ void CSSParser::countLines()
{
for (UChar* current = yytext; current < yytext + yyleng; ++current) {
if (*current == '\n')
- ++m_line;
+ ++m_lineNumber;
}
}
@@ -5341,7 +5360,7 @@ CSSRule* CSSParser::createStyleRule(Vector<CSSSelector*>* selectors)
CSSStyleRule* result = 0;
markRuleBodyEnd();
if (selectors) {
- RefPtr<CSSStyleRule> rule = CSSStyleRule::create(m_styleSheet, m_lastSelectorLine);
+ RefPtr<CSSStyleRule> rule = CSSStyleRule::create(m_styleSheet, m_lastSelectorLineNumber);
rule->adoptSelectorVector(*selectors);
if (m_hasFontFaceOnlyValues)
deleteFontFaceOnlyValues();
@@ -5447,7 +5466,7 @@ CSSRule* CSSParser::createPageRule(CSSSelector* pageSelector)
m_allowImportRules = m_allowNamespaceDeclarations = m_allowVariablesRules = false;
CSSPageRule* pageRule = 0;
if (pageSelector) {
- RefPtr<CSSPageRule> rule = CSSPageRule::create(m_styleSheet, pageSelector, m_lastSelectorLine);
+ RefPtr<CSSPageRule> rule = CSSPageRule::create(m_styleSheet, pageSelector, m_lastSelectorLineNumber);
rule->setDeclaration(CSSMutableStyleDeclaration::create(rule.get(), m_parsedProperties, m_numParsedProperties));
pageRule = rule.get();
m_parsedStyleObjects.append(rule.release());
@@ -5601,7 +5620,7 @@ void CSSParser::invalidBlockHit()
void CSSParser::updateLastSelectorLineAndPosition()
{
- m_lastSelectorLine = m_line;
+ m_lastSelectorLineNumber = m_lineNumber;
markRuleBodyStart();
}
diff --git a/WebCore/css/CSSParser.h b/WebCore/css/CSSParser.h
index 81b1ae2..5d76a41 100644
--- a/WebCore/css/CSSParser.h
+++ b/WebCore/css/CSSParser.h
@@ -60,7 +60,7 @@ namespace WebCore {
CSSParser(bool strictParsing = true);
~CSSParser();
- void parseSheet(CSSStyleSheet*, const String&, StyleRuleRanges* ruleRangeMap = 0);
+ void parseSheet(CSSStyleSheet*, const String&, int startLineNumber = 0, StyleRuleRanges* ruleRangeMap = 0);
PassRefPtr<CSSRule> parseRule(CSSStyleSheet*, const String&);
PassRefPtr<CSSRule> parseKeyframeRule(CSSStyleSheet*, const String&);
bool parseValue(CSSMutableStyleDeclaration*, int propId, const String&, bool important);
@@ -288,8 +288,8 @@ namespace WebCore {
int yyleng;
int yyTok;
int yy_start;
- int m_line;
- int m_lastSelectorLine;
+ int m_lineNumber;
+ int m_lastSelectorLineNumber;
bool m_allowImportRules;
bool m_allowVariablesRules;
diff --git a/WebCore/css/CSSPrimitiveValueMappings.h b/WebCore/css/CSSPrimitiveValueMappings.h
index baa1ab8..9533f68 100644
--- a/WebCore/css/CSSPrimitiveValueMappings.h
+++ b/WebCore/css/CSSPrimitiveValueMappings.h
@@ -36,7 +36,6 @@
#include "FontSmoothingMode.h"
#include "GraphicsTypes.h"
#include "Path.h"
-#include "RenderStyleConstants.h"
#include "SVGRenderStyleDefs.h"
#include "TextDirection.h"
#include "TextRenderingMode.h"
@@ -253,6 +252,9 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ControlPart e)
case MediaVolumeSliderPart:
m_value.ident = CSSValueMediaVolumeSlider;
break;
+ case MediaVolumeSliderMuteButtonPart:
+ m_value.ident = CSSValueMediaVolumeSliderMuteButton;
+ break;
case MediaVolumeSliderThumbPart:
m_value.ident = CSSValueMediaVolumeSliderthumb;
break;
diff --git a/WebCore/css/CSSProperty.cpp b/WebCore/css/CSSProperty.cpp
index d7f2175..777c0c0 100644
--- a/WebCore/css/CSSProperty.cpp
+++ b/WebCore/css/CSSProperty.cpp
@@ -38,4 +38,20 @@ bool operator==(const CSSProperty& a, const CSSProperty& b)
return a.m_id == b.m_id && a.m_important == b.m_important && a.m_value == b.m_value;
}
+int CSSProperty::resolveDirectionAwareProperty(int propertyID, TextDirection direction)
+{
+ switch (static_cast<CSSPropertyID>(propertyID)) {
+ case CSSPropertyWebkitMarginEnd:
+ return direction == LTR ? CSSPropertyMarginRight : CSSPropertyMarginLeft;
+ case CSSPropertyWebkitMarginStart:
+ return direction == LTR ? CSSPropertyMarginLeft : CSSPropertyMarginRight;
+ case CSSPropertyWebkitPaddingEnd:
+ return direction == LTR ? CSSPropertyPaddingRight : CSSPropertyPaddingLeft;
+ case CSSPropertyWebkitPaddingStart:
+ return direction == LTR ? CSSPropertyPaddingLeft : CSSPropertyPaddingRight;
+ default:
+ return propertyID;
+ }
+}
+
} // namespace WebCore
diff --git a/WebCore/css/CSSProperty.h b/WebCore/css/CSSProperty.h
index 4505f33..7a3da68 100644
--- a/WebCore/css/CSSProperty.h
+++ b/WebCore/css/CSSProperty.h
@@ -22,6 +22,7 @@
#define CSSProperty_h
#include "CSSValue.h"
+#include "TextDirection.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
@@ -58,6 +59,8 @@ public:
String cssText() const;
+ static int resolveDirectionAwareProperty(int propertyID, TextDirection);
+
friend bool operator==(const CSSProperty&, const CSSProperty&);
// Make sure the following fits in 4 bytes. Really.
diff --git a/WebCore/css/CSSPropertyNames.in b/WebCore/css/CSSPropertyNames.in
index 9c65971..a330abe 100644
--- a/WebCore/css/CSSPropertyNames.in
+++ b/WebCore/css/CSSPropertyNames.in
@@ -19,6 +19,7 @@ font-size
font-style
font-variant
font-weight
+text-rendering
-webkit-text-size-adjust
zoom
@@ -134,7 +135,6 @@ text-overline-color
text-overline-mode
text-overline-style
text-overline-width
-text-rendering
text-shadow
text-transform
text-underline
@@ -215,6 +215,7 @@ z-index
-webkit-line-clamp
-webkit-margin-bottom-collapse
-webkit-margin-collapse
+-webkit-margin-end
-webkit-margin-start
-webkit-margin-top-collapse
-webkit-marquee
@@ -239,6 +240,7 @@ z-index
-webkit-mask-size
-webkit-match-nearest-mail-blockquote-color
-webkit-nbsp-mode
+-webkit-padding-end
-webkit-padding-start
-webkit-perspective
-webkit-perspective-origin
diff --git a/WebCore/css/CSSSegmentedFontFace.cpp b/WebCore/css/CSSSegmentedFontFace.cpp
index c3e3fd0..b13dd9c 100644
--- a/WebCore/css/CSSSegmentedFontFace.cpp
+++ b/WebCore/css/CSSSegmentedFontFace.cpp
@@ -110,15 +110,15 @@ FontData* CSSSegmentedFontFace::getFontData(const FontDescription& fontDescripti
FontTraitsMask traitsMask = m_fontFaces[i]->traitsMask();
bool syntheticBold = !(traitsMask & (FontWeight600Mask | FontWeight700Mask | FontWeight800Mask | FontWeight900Mask)) && (desiredTraitsMask & (FontWeight600Mask | FontWeight700Mask | FontWeight800Mask | FontWeight900Mask));
bool syntheticItalic = !(traitsMask & FontStyleItalicMask) && (desiredTraitsMask & FontStyleItalicMask);
- if (const FontData* faceFontData = m_fontFaces[i]->getFontData(fontDescription, syntheticBold, syntheticItalic)) {
+ if (const SimpleFontData* faceFontData = m_fontFaces[i]->getFontData(fontDescription, syntheticBold, syntheticItalic)) {
ASSERT(!faceFontData->isSegmented());
const Vector<CSSFontFace::UnicodeRange>& ranges = m_fontFaces[i]->ranges();
unsigned numRanges = ranges.size();
if (!numRanges)
- fontData->appendRange(FontDataRange(0, 0x7FFFFFFF, static_cast<const SimpleFontData*>(faceFontData)));
+ fontData->appendRange(FontDataRange(0, 0x7FFFFFFF, faceFontData));
else {
for (unsigned j = 0; j < numRanges; ++j)
- fontData->appendRange(FontDataRange(ranges[j].from(), ranges[j].to(), static_cast<const SimpleFontData*>(faceFontData)));
+ fontData->appendRange(FontDataRange(ranges[j].from(), ranges[j].to(), faceFontData));
}
}
}
diff --git a/WebCore/css/CSSSelector.cpp b/WebCore/css/CSSSelector.cpp
index ddf1737..47ead5f 100644
--- a/WebCore/css/CSSSelector.cpp
+++ b/WebCore/css/CSSSelector.cpp
@@ -3,7 +3,7 @@
* 1999 Waldo Bastian (bastian@kde.org)
* 2001 Andreas Schlapbach (schlpbch@iam.unibe.ch)
* 2001-2003 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2002, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
* Copyright (C) 2008 David Smith (catfish.man@gmail.com)
* Copyright (C) 2010 Google Inc. All rights reserved.
*
@@ -140,6 +140,8 @@ PseudoId CSSSelector::pseudoId(PseudoType type)
return MEDIA_CONTROLS_TIMELINE;
case PseudoMediaControlsVolumeSlider:
return MEDIA_CONTROLS_VOLUME_SLIDER;
+ case PseudoMediaControlsVolumeSliderMuteButton:
+ return MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON;
case PseudoMediaControlsSeekBackButton:
return MEDIA_CONTROLS_SEEK_BACK_BUTTON;
case PseudoMediaControlsSeekForwardButton:
@@ -324,6 +326,7 @@ static HashMap<AtomicStringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap(
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsPlayButton, ("-webkit-media-controls-play-button"));
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsTimeline, ("-webkit-media-controls-timeline"));
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSlider, ("-webkit-media-controls-volume-slider"));
+ DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSliderMuteButton, ("-webkit-media-controls-volume-slider-mute-button"));
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekBackButton, ("-webkit-media-controls-seek-back-button"));
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekForwardButton, ("-webkit-media-controls-seek-forward-button"));
DEFINE_STATIC_LOCAL(AtomicString, mediaControlsRewindButton, ("-webkit-media-controls-rewind-button"));
@@ -437,6 +440,7 @@ static HashMap<AtomicStringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap(
nameToPseudoType->set(mediaControlsTimeRemainingDisplay.impl(), CSSSelector::PseudoMediaControlsTimeRemainingDisplay);
nameToPseudoType->set(mediaControlsTimeline.impl(), CSSSelector::PseudoMediaControlsTimeline);
nameToPseudoType->set(mediaControlsVolumeSlider.impl(), CSSSelector::PseudoMediaControlsVolumeSlider);
+ nameToPseudoType->set(mediaControlsVolumeSliderMuteButton.impl(), CSSSelector::PseudoMediaControlsVolumeSliderMuteButton);
nameToPseudoType->set(mediaControlsSeekBackButton.impl(), CSSSelector::PseudoMediaControlsSeekBackButton);
nameToPseudoType->set(mediaControlsSeekForwardButton.impl(), CSSSelector::PseudoMediaControlsSeekForwardButton);
nameToPseudoType->set(mediaControlsRewindButton.impl(), CSSSelector::PseudoMediaControlsRewindButton);
@@ -541,6 +545,7 @@ void CSSSelector::extractPseudoType() const
case PseudoMediaControlsTimeRemainingDisplay:
case PseudoMediaControlsTimeline:
case PseudoMediaControlsVolumeSlider:
+ case PseudoMediaControlsVolumeSliderMuteButton:
case PseudoMediaControlsSeekBackButton:
case PseudoMediaControlsSeekForwardButton:
case PseudoMediaControlsRewindButton:
diff --git a/WebCore/css/CSSSelector.h b/WebCore/css/CSSSelector.h
index d55fafc..fc0dd7b 100644
--- a/WebCore/css/CSSSelector.h
+++ b/WebCore/css/CSSSelector.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
* 1999 Waldo Bastian (bastian@kde.org)
- * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 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,6 +26,7 @@
#include "QualifiedName.h"
#include <wtf/Noncopyable.h>
#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
namespace WebCore {
@@ -176,6 +177,7 @@ namespace WebCore {
PseudoMediaControlsPlayButton,
PseudoMediaControlsTimelineContainer,
PseudoMediaControlsVolumeSliderContainer,
+ PseudoMediaControlsVolumeSliderMuteButton,
PseudoMediaControlsCurrentTimeDisplay,
PseudoMediaControlsTimeRemainingDisplay,
PseudoMediaControlsToggleClosedCaptions,
@@ -283,11 +285,10 @@ namespace WebCore {
void extractPseudoType() const;
struct RareData : Noncopyable {
- RareData(CSSSelector* tagHistory)
+ RareData(PassOwnPtr<CSSSelector> tagHistory)
: m_a(0)
, m_b(0)
, m_tagHistory(tagHistory)
- , m_simpleSelector(0)
, m_attribute(anyQName())
, m_argument(nullAtom)
{
@@ -308,7 +309,7 @@ namespace WebCore {
{
if (m_hasRareData)
return;
- m_data.m_rareData = new RareData(m_data.m_tagHistory);
+ m_data.m_rareData = new RareData(adoptPtr(m_data.m_tagHistory));
m_hasRareData = true;
}
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 750988e..44d9e66 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -1038,7 +1038,7 @@ bool CSSStyleSelector::canShareStyleWithElement(Node* n)
if (classesMatch) {
bool mappedAttrsMatch = true;
if (s->hasMappedAttributes())
- mappedAttrsMatch = s->mappedAttributes()->mappedMapsEquivalent(m_styledElement->mappedAttributes());
+ mappedAttrsMatch = s->attributeMap()->mappedMapsEquivalent(m_styledElement->attributeMap());
if (mappedAttrsMatch) {
if (s->isLink()) {
if (m_elementLinkState != style->insideLink())
@@ -1258,7 +1258,7 @@ PassRefPtr<RenderStyle> CSSStyleSelector::styleForElement(Element* e, RenderStyl
// Ask if the HTML element has mapped attributes.
if (m_styledElement->hasMappedAttributes()) {
// Walk our attribute list and add in each decl.
- const NamedNodeMap* map = m_styledElement->mappedAttributes();
+ const NamedNodeMap* map = m_styledElement->attributeMap();
for (unsigned i = 0; i < map->length(); i++) {
Attribute* attr = map->attributeItem(i);
if (attr->isMappedAttribute() && attr->decl()) {
@@ -2920,7 +2920,7 @@ void CSSStyleSelector::applyDeclarations(bool isImportant, int startIndex, int e
if (applyFirst) {
COMPILE_ASSERT(firstCSSProperty == CSSPropertyColor, CSS_color_is_first_property);
- COMPILE_ASSERT(CSSPropertyZoom == CSSPropertyColor + 10, CSS_zoom_is_end_of_first_prop_range);
+ COMPILE_ASSERT(CSSPropertyZoom == CSSPropertyColor + 11, CSS_zoom_is_end_of_first_prop_range);
COMPILE_ASSERT(CSSPropertyLineHeight == CSSPropertyZoom + 1, CSS_line_height_is_after_zoom);
// give special priority to font-xxx, color properties, etc
@@ -3108,11 +3108,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
bool isInherit = m_parentNode && valueType == CSSValue::CSS_INHERIT;
bool isInitial = valueType == CSSValue::CSS_INITIAL || (!m_parentNode && valueType == CSSValue::CSS_INHERIT);
- // These properties are used to set the correct margins/padding on RTL lists.
- if (id == CSSPropertyWebkitMarginStart)
- id = m_style->direction() == LTR ? CSSPropertyMarginLeft : CSSPropertyMarginRight;
- else if (id == CSSPropertyWebkitPaddingStart)
- id = m_style->direction() == LTR ? CSSPropertyPaddingLeft : CSSPropertyPaddingRight;
+ id = CSSProperty::resolveDirectionAwareProperty(id, m_style->direction());
if (m_checker.m_matchVisitedPseudoClass && !isValidVisitedLinkProperty(id)) {
// Limit the properties that can be applied to only the ones honored by :visited.
@@ -5502,7 +5498,9 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
case CSSPropertyTextUnderlineStyle:
case CSSPropertyTextUnderlineWidth:
case CSSPropertyWebkitFontSizeDelta:
+ case CSSPropertyWebkitMarginEnd:
case CSSPropertyWebkitMarginStart:
+ case CSSPropertyWebkitPaddingEnd:
case CSSPropertyWebkitPaddingStart:
case CSSPropertyWebkitTextDecorationsInEffect:
case CSSPropertyWebkitTextStroke:
diff --git a/WebCore/css/CSSStyleSheet.cpp b/WebCore/css/CSSStyleSheet.cpp
index 227d37c..1ef1c2b 100644
--- a/WebCore/css/CSSStyleSheet.cpp
+++ b/WebCore/css/CSSStyleSheet.cpp
@@ -183,9 +183,14 @@ const AtomicString& CSSStyleSheet::determineNamespace(const AtomicString& prefix
bool CSSStyleSheet::parseString(const String &string, bool strict)
{
+ return parseStringAtLine(string, strict, 0);
+}
+
+bool CSSStyleSheet::parseStringAtLine(const String& string, bool strict, int startLineNumber)
+{
setStrictParsing(strict);
CSSParser p(strict);
- p.parseSheet(this, string);
+ p.parseSheet(this, string, startLineNumber);
return true;
}
diff --git a/WebCore/css/CSSStyleSheet.h b/WebCore/css/CSSStyleSheet.h
index 4c59144..fe82794 100644
--- a/WebCore/css/CSSStyleSheet.h
+++ b/WebCore/css/CSSStyleSheet.h
@@ -81,6 +81,8 @@ public:
virtual bool parseString(const String&, bool strict = true);
+ bool parseStringAtLine(const String&, bool strict, int startLineNumber);
+
virtual bool isLoading();
virtual void checkLoaded();
diff --git a/WebCore/css/CSSStyleSheet.idl b/WebCore/css/CSSStyleSheet.idl
index e180217..e488657 100644
--- a/WebCore/css/CSSStyleSheet.idl
+++ b/WebCore/css/CSSStyleSheet.idl
@@ -21,7 +21,7 @@
module css {
// Introduced in DOM Level 2:
- interface CSSStyleSheet : stylesheets::StyleSheet {
+ interface CSSStyleSheet : StyleSheet {
readonly attribute CSSRule ownerRule;
readonly attribute CSSRuleList cssRules;
diff --git a/WebCore/css/CSSValueKeywords.in b/WebCore/css/CSSValueKeywords.in
index 3439878..d302990 100644
--- a/WebCore/css/CSSValueKeywords.in
+++ b/WebCore/css/CSSValueKeywords.in
@@ -583,6 +583,7 @@ media-sliderthumb
media-volume-slider-container
media-volume-slider
media-volume-sliderthumb
+media-volume-slider-mute-button
media-controls-background
media-current-time-display
media-time-remaining-display
diff --git a/WebCore/css/CSSVariablesRule.idl b/WebCore/css/CSSVariablesRule.idl
index 780e84d..b7559f6 100644
--- a/WebCore/css/CSSVariablesRule.idl
+++ b/WebCore/css/CSSVariablesRule.idl
@@ -26,7 +26,7 @@
module css {
interface CSSVariablesRule : CSSRule {
- readonly attribute stylesheets::MediaList media;
+ readonly attribute MediaList media;
readonly attribute CSSVariablesDeclaration variables;
};
diff --git a/WebCore/css/MediaQuery.cpp b/WebCore/css/MediaQuery.cpp
index 187a33d..b71706c 100644
--- a/WebCore/css/MediaQuery.cpp
+++ b/WebCore/css/MediaQuery.cpp
@@ -78,7 +78,7 @@ static bool expressionCompare(const MediaQueryExp* a, const MediaQueryExp* b)
MediaQuery::MediaQuery(Restrictor r, const String& mediaType, PassOwnPtr<Vector<MediaQueryExp*> > exprs)
: m_restrictor(r)
, m_mediaType(mediaType.lower())
- , m_expressions(exprs.release())
+ , m_expressions(exprs)
, m_ignored(false)
{
if (!m_expressions) {
@@ -108,7 +108,6 @@ MediaQuery::MediaQuery(Restrictor r, const String& mediaType, PassOwnPtr<Vector<
MediaQuery::~MediaQuery()
{
deleteAllValues(*m_expressions);
- delete m_expressions;
}
// http://dev.w3.org/csswg/cssom/#compare-media-queries
diff --git a/WebCore/css/MediaQuery.h b/WebCore/css/MediaQuery.h
index ccc59ac..3eea3b2 100644
--- a/WebCore/css/MediaQuery.h
+++ b/WebCore/css/MediaQuery.h
@@ -43,11 +43,11 @@ public:
Only, Not, None
};
- MediaQuery(Restrictor r, const String& mediaType, PassOwnPtr<Vector<MediaQueryExp*> > exprs);
+ MediaQuery(Restrictor, const String& mediaType, PassOwnPtr<Vector<MediaQueryExp*> > exprs);
~MediaQuery();
Restrictor restrictor() const { return m_restrictor; }
- const Vector<MediaQueryExp*>* expressions() const { return m_expressions; }
+ const Vector<MediaQueryExp*>* expressions() const { return m_expressions.get(); }
String mediaType() const { return m_mediaType; }
bool operator==(const MediaQuery& other) const;
String cssText() const;
@@ -56,7 +56,7 @@ public:
private:
Restrictor m_restrictor;
String m_mediaType;
- Vector<MediaQueryExp*>* m_expressions;
+ OwnPtr<Vector<MediaQueryExp*> > m_expressions;
bool m_ignored;
String m_serializationCache;
diff --git a/WebCore/css/StyleMedia.h b/WebCore/css/StyleMedia.h
index 761e6a3..82c9eba 100644
--- a/WebCore/css/StyleMedia.h
+++ b/WebCore/css/StyleMedia.h
@@ -27,10 +27,12 @@
#ifndef StyleMedia_h
#define StyleMedia_h
-#include "DOMWindow.h"
+#include "PlatformString.h"
namespace WebCore {
+class Frame;
+
class StyleMedia : public RefCounted<StyleMedia> {
public:
static PassRefPtr<StyleMedia> create(Frame* frame)
diff --git a/WebCore/css/mathml.css b/WebCore/css/mathml.css
index 7a9b348..ca9d7b0 100644
--- a/WebCore/css/mathml.css
+++ b/WebCore/css/mathml.css
@@ -5,6 +5,7 @@ math {
display: inline-block;
padding: 0px;
margin: 0px;
+ text-align: left;
vertical-align: baseline;
line-height: 1.0;
padding-left: 1px;
@@ -17,10 +18,6 @@ math[display="block"] {
margin-bottom: 1em;
}
-math * {
- text-align: left;
-}
-
math > * {
vertical-align: baseline;
}
@@ -32,7 +29,7 @@ mrow, mfenced {
padding-right: 1px;
}
-mi, mtext {
+mi{
font-style: italic;
padding-right: 0.1em;
}
@@ -97,15 +94,15 @@ math > mo, mrow > mo, mfenced > mo {
padding-right: 0.05em;
}
-mo[mathsize="small"], mn[mathsize="small"], mi[mathsize="small"] {
+math[mathsize="small"], mstyle[mathsize="small"], mo[mathsize="small"], mn[mathsize="small"], mi[mathsize="small"], mtext[mathsize="small"], mspace[mathsize="small"], ms[mathsize="small"]{
font-size: 0.75em;
}
-mo[mathsize="normal"],mn[mathsize="normal"],mi[mathsize="normal"] {
+math[mathsize="normal"], mstyle[mathsize="normal"], mo[mathsize="normal"], mn[mathsize="normal"], mi[mathsize="normal"], mtext[mathsize="normal"], mspace[mathsize="normal"], ms[mathsize="normal"]{
font-size: 1em;
}
-mo[mathsize="big"], mn[mathsize="big"], mi[mathsize="big"] {
+math[mathsize="big"], mstyle[mathsize="big"], mo[mathsize="big"], mn[mathsize="big"], mi[mathsize="big"], mtext[mathsize="big"], mspace[mathsize="big"], ms[mathsize="big"]{
font-size: 1.5em;
}
diff --git a/WebCore/css/mediaControls.css b/WebCore/css/mediaControls.css
index de2c2fe..6a0f14b 100644
--- a/WebCore/css/mediaControls.css
+++ b/WebCore/css/mediaControls.css
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -131,3 +131,8 @@ audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-medi
width: 16px;
height: 16px;
}
+
+audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button {
+ -webkit-appearance: media-volume-slider-mute-button;
+ display: none;
+}
diff --git a/WebCore/css/mediaControlsQuickTime.css b/WebCore/css/mediaControlsQuickTime.css
index 965685d..d2c731f 100644
--- a/WebCore/css/mediaControlsQuickTime.css
+++ b/WebCore/css/mediaControlsQuickTime.css
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -32,6 +32,7 @@ audio {
audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
/* In mediaControls.css */
-webkit-appearance: media-controls-background;
+ overflow: visible;
height: 25px;
}
@@ -41,10 +42,11 @@ video:-webkit-full-page-media::-webkit-media-controls-panel {
audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
-webkit-box-ordinal-group: 2; /* Before the fullscreen button */
- width: 15px;
- height: 14px;
+
+ width: 14px;
+ height: 12px;
margin-left: 2px;
- margin-right: 8px;
+ margin-right: 9px;
}
audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
@@ -185,3 +187,38 @@ audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-medi
margin-right: 7px;
-webkit-box-ordinal-group: 3; /* between mute and fullscreen */
}
+
+audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container {
+ -webkit-appearance: media-volume-slider-container;
+ position: absolute;
+
+ top: 0;
+ left: 0;
+
+ width: 22px;
+ height: 114px;
+}
+
+audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
+ -webkit-appearance: media-volume-slider;
+ display: inline;
+ position: absolute;
+
+ top: 7px;
+ left: 6px;
+
+ width: 10px;
+ height: 80px;
+}
+
+audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button {
+ -webkit-appearance: media-volume-slider-mute-button;
+ display: inline;
+ position: absolute;
+
+ bottom: 5px;
+ left: 4px;
+
+ width: 14px;
+ height: 12px;
+}
diff --git a/WebCore/css/themeWin.css b/WebCore/css/themeWin.css
index a0170ac..f2ad669 100644
--- a/WebCore/css/themeWin.css
+++ b/WebCore/css/themeWin.css
@@ -78,8 +78,7 @@ input[type="search"]::-webkit-search-results-button {
}
input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
- /* Matches Firefox */
- padding: 0 6px;
+ padding: 1px 6px;
}
/* Windows selects are not rounded. Custom borders for them shouldn't be either. */
diff --git a/WebCore/dom/Attribute.h b/WebCore/dom/Attribute.h
index 9e1afc6..cf84a6f 100644
--- a/WebCore/dom/Attribute.h
+++ b/WebCore/dom/Attribute.h
@@ -78,6 +78,11 @@ public:
void setValue(const AtomicString& value) { m_value = value; }
void setPrefix(const AtomicString& prefix) { m_name.setPrefix(prefix); }
+ // Note: This API is only for HTMLTreeBuilder. It is not safe to change the
+ // name of an attribute once parseMappedAttribute has been called as DOM
+ // elements may have placed the Attribute in a hash by name.
+ void parserSetName(const QualifiedName& name) { m_name = name; }
+
bool isMappedAttribute() { return m_isMappedAttribute; }
private:
diff --git a/WebCore/dom/BeforeLoadEvent.h b/WebCore/dom/BeforeLoadEvent.h
index fc5814a..f60e438 100644
--- a/WebCore/dom/BeforeLoadEvent.h
+++ b/WebCore/dom/BeforeLoadEvent.h
@@ -28,7 +28,6 @@
#define BeforeLoadEvent_h
#include "Event.h"
-#include "EventNames.h"
namespace WebCore {
diff --git a/WebCore/dom/CanvasSurface.h b/WebCore/dom/CanvasSurface.h
deleted file mode 100644
index 3601381..0000000
--- a/WebCore/dom/CanvasSurface.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. 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 CanvasSurface_h
-#define CanvasSurface_h
-
-#include "AffineTransform.h"
-#include "IntSize.h"
-#include "PlatformString.h"
-
-#include <wtf/OwnPtr.h>
-#include <wtf/Noncopyable.h>
-
-namespace WebCore {
-
-class AffineTransform;
-class FloatPoint;
-class FloatRect;
-class FloatSize;
-class GraphicsContext;
-class ImageBuffer;
-class IntPoint;
-
-class CSSStyleSelector;
-class RenderBox;
-class RenderStyle;
-class SecurityOrigin;
-
-typedef int ExceptionCode;
-
-class CanvasSurface : public Noncopyable {
-public:
- CanvasSurface(float pageScaleFactor);
- virtual ~CanvasSurface();
-
- int width() const { return m_size.width(); }
- int height() const { return m_size.height(); }
-
- String toDataURL(const String& mimeType, const double* quality, ExceptionCode&);
- String toDataURL(const String& mimeType, ExceptionCode& ec) { return toDataURL(mimeType, 0, ec); }
-
- const IntSize& size() const { return m_size; }
-
- virtual void willDraw(const FloatRect&);
-
- GraphicsContext* drawingContext() const;
-
- ImageBuffer* buffer() const;
-
- IntRect convertLogicalToDevice(const FloatRect&) const;
- IntSize convertLogicalToDevice(const FloatSize&) const;
- IntPoint convertLogicalToDevice(const FloatPoint&) const;
-
- void setOriginTainted() { m_originClean = false; }
- bool originClean() const { return m_originClean; }
-
- AffineTransform baseTransform() const;
-
- const SecurityOrigin& securityOrigin() const;
- RenderBox* renderBox() const;
- RenderStyle* computedStyle();
- CSSStyleSelector* styleSelector();
-
-protected:
- void setSurfaceSize(const IntSize&);
- bool hasCreatedImageBuffer() const { return m_hasCreatedImageBuffer; }
-
- static const int DefaultWidth;
- static const int DefaultHeight;
-
-private:
- void createImageBuffer() const;
-
- static const float MaxCanvasArea;
-
- IntSize m_size;
-
- float m_pageScaleFactor;
- bool m_originClean;
-
- // m_createdImageBuffer means we tried to malloc the buffer. We didn't necessarily get it.
- mutable bool m_hasCreatedImageBuffer;
- mutable OwnPtr<ImageBuffer> m_imageBuffer;
-};
-
-} // namespace WebCore
-
-#endif
diff --git a/WebCore/dom/CharacterData.cpp b/WebCore/dom/CharacterData.cpp
index 075df47..5fbb6f2 100644
--- a/WebCore/dom/CharacterData.cpp
+++ b/WebCore/dom/CharacterData.cpp
@@ -59,7 +59,7 @@ String CharacterData::substringData(unsigned offset, unsigned count, ExceptionCo
return m_data->substring(offset, count);
}
-void CharacterData::appendData(const String& arg, ExceptionCode&)
+PassRefPtr<StringImpl> CharacterData::parserAppendData(const String& arg)
{
String newStr = m_data;
newStr.append(arg);
@@ -72,7 +72,13 @@ void CharacterData::appendData(const String& arg, ExceptionCode&)
attach();
} else if (renderer())
toRenderText(renderer())->setTextWithOffset(m_data, oldStr->length(), 0);
-
+
+ return oldStr.release();
+}
+
+void CharacterData::appendData(const String& arg, ExceptionCode&)
+{
+ RefPtr<StringImpl> oldStr = parserAppendData(arg);
dispatchModifiedEvent(oldStr.get());
}
diff --git a/WebCore/dom/CharacterData.h b/WebCore/dom/CharacterData.h
index 5ca4b75..ecc0cf7 100644
--- a/WebCore/dom/CharacterData.h
+++ b/WebCore/dom/CharacterData.h
@@ -42,6 +42,9 @@ public:
StringImpl* dataImpl() { return m_data.get(); }
+ // Like appendData, but optimized for the parser (e.g., no mutation events).
+ PassRefPtr<StringImpl> parserAppendData(const String&);
+
protected:
CharacterData(Document* document, const String& text, ConstructionType type)
: Node(document, type)
diff --git a/WebCore/dom/ContainerNode.cpp b/WebCore/dom/ContainerNode.cpp
index 6539e5b..80bd035 100644
--- a/WebCore/dom/ContainerNode.cpp
+++ b/WebCore/dom/ContainerNode.cpp
@@ -616,6 +616,11 @@ void ContainerNode::queuePostAttachCallback(NodeCallback callback, Node* node)
s_postAttachCallbackQueue->append(std::pair<NodeCallback, RefPtr<Node> >(callback, node));
}
+bool ContainerNode::postAttachCallbacksAreSuspended()
+{
+ return s_attachDepth;
+}
+
void ContainerNode::dispatchPostAttachCallbacks()
{
// We recalculate size() each time through the loop because a callback
diff --git a/WebCore/dom/ContainerNode.h b/WebCore/dom/ContainerNode.h
index 36e6ac5..a27d95b 100644
--- a/WebCore/dom/ContainerNode.h
+++ b/WebCore/dom/ContainerNode.h
@@ -76,10 +76,12 @@ public:
bool dispatchBeforeLoadEvent(const String& sourceURL);
+ static void queuePostAttachCallback(NodeCallback, Node*);
+ static bool postAttachCallbacksAreSuspended();
+
protected:
ContainerNode(Document*, ConstructionType = CreateContainer);
- static void queuePostAttachCallback(NodeCallback, Node*);
void suspendPostAttachCallbacks();
void resumePostAttachCallbacks();
diff --git a/WebCore/dom/CustomEvent.h b/WebCore/dom/CustomEvent.h
index d910767..d287a65 100644
--- a/WebCore/dom/CustomEvent.h
+++ b/WebCore/dom/CustomEvent.h
@@ -29,7 +29,6 @@
#include "AtomicString.h"
#include "Event.h"
#include "ScriptValue.h"
-#include <wtf/RefCounted.h>
namespace WebCore {
diff --git a/WebCore/dom/DOMStringMap.h b/WebCore/dom/DOMStringMap.h
index c0bc07d..e91d884 100644
--- a/WebCore/dom/DOMStringMap.h
+++ b/WebCore/dom/DOMStringMap.h
@@ -28,7 +28,6 @@
#include "PlatformString.h"
#include <wtf/Noncopyable.h>
-#include <wtf/PassRefPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
diff --git a/WebCore/dom/DeviceOrientation.cpp b/WebCore/dom/DeviceOrientationController.cpp
index 6f8d06a..97ddcd8 100644
--- a/WebCore/dom/DeviceOrientation.cpp
+++ b/WebCore/dom/DeviceOrientationController.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#include "DeviceOrientation.h"
+#include "DeviceOrientationController.h"
#if ENABLE(DEVICE_ORIENTATION)
@@ -34,13 +34,13 @@
namespace WebCore {
-DeviceOrientation::DeviceOrientation(Page* page, DeviceOrientationClient* client)
+DeviceOrientationController::DeviceOrientationController(Page* page, DeviceOrientationClient* client)
: m_page(page)
, m_client(client)
{
}
-void DeviceOrientation::onDeviceOrientationChange(double alpha, double beta, double gamma)
+void DeviceOrientationController::onDeviceOrientationChange(double alpha, double beta, double gamma)
{
// FIXME: Fire DeviceOrientationEvents on the window object of all frames
// that are listening to orientation.
diff --git a/WebCore/dom/DeviceOrientation.h b/WebCore/dom/DeviceOrientationController.h
index e4d96be..5f8f49a 100644
--- a/WebCore/dom/DeviceOrientation.h
+++ b/WebCore/dom/DeviceOrientationController.h
@@ -23,17 +23,17 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef DeviceOrientation_h
-#define DeviceOrientation_h
+#ifndef DeviceOrientationController_h
+#define DeviceOrientationController_h
namespace WebCore {
class DeviceOrientationClient;
class Page;
-class DeviceOrientation {
+class DeviceOrientationController {
public:
- DeviceOrientation(Page*, DeviceOrientationClient*);
+ DeviceOrientationController(Page*, DeviceOrientationClient*);
// FIXME: Add methods to start and stop the service.
@@ -46,4 +46,4 @@ private:
} // namespace WebCore
-#endif // DeviceOrientation_h
+#endif // DeviceOrientationController_h
diff --git a/WebCore/dom/DeviceOrientationEvent.h b/WebCore/dom/DeviceOrientationEvent.h
index 0cec9ba..33ff026 100644
--- a/WebCore/dom/DeviceOrientationEvent.h
+++ b/WebCore/dom/DeviceOrientationEvent.h
@@ -26,7 +26,6 @@
#ifndef DeviceOrientationEvent_h
#define DeviceOrientationEvent_h
-#include "DOMWindow.h"
#include "Event.h"
namespace WebCore {
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index be2bb4c..6f91738 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -44,6 +44,7 @@
#include "CustomEvent.h"
#include "DOMImplementation.h"
#include "DOMWindow.h"
+#include "DeviceOrientationEvent.h"
#include "DocLoader.h"
#include "DocumentFragment.h"
#include "DocumentLoader.h"
@@ -2061,7 +2062,7 @@ void Document::write(const SegmentedString& text, Document* ownerDocument)
printf("Beginning a document.write at %d\n", elapsedTime());
#endif
- if (!m_parser || m_parser->finishWasCalled())
+ if (!m_parser)
open(ownerDocument);
ASSERT(m_parser);
@@ -2199,6 +2200,8 @@ const Vector<RefPtr<CSSStyleSheet> >* Document::pageGroupUserSheets() const
const UserStyleSheetVector* sheets = it->second;
for (unsigned i = 0; i < sheets->size(); ++i) {
const UserStyleSheet* sheet = sheets->at(i).get();
+ if (sheet->injectedFrames() == InjectInTopFrameOnly && ownerElement())
+ continue;
if (!UserContentURLPattern::matchesPatterns(url(), sheet->whitelist(), sheet->blacklist()))
continue;
RefPtr<CSSStyleSheet> parsedSheet = CSSStyleSheet::createInline(const_cast<Document*>(this), sheet->url());
@@ -3321,6 +3324,10 @@ PassRefPtr<Event> Document::createEvent(const String& eventType, ExceptionCode&
#endif
event = TouchEvent::create();
#endif
+#if ENABLE(DEVICE_ORIENTATION)
+ else if (eventType == "DeviceOrientationEvent")
+ event = DeviceOrientationEvent::create();
+#endif
if (event)
return event.release();
@@ -3375,7 +3382,7 @@ CSSStyleDeclaration* Document::getOverrideStyle(Element*, const String&)
return 0;
}
-Element* Document::ownerElement() const
+HTMLFrameOwnerElement* Document::ownerElement() const
{
if (!frame())
return 0;
diff --git a/WebCore/dom/Document.h b/WebCore/dom/Document.h
index 3d9cf48..63a8d12 100644
--- a/WebCore/dom/Document.h
+++ b/WebCore/dom/Document.h
@@ -81,6 +81,7 @@ namespace WebCore {
class HTMLDocument;
class HTMLElement;
class HTMLFormElement;
+ class HTMLFrameOwnerElement;
class HTMLHeadElement;
class HTMLInputElement;
class HTMLMapElement;
@@ -734,7 +735,7 @@ public:
// Returns the owning element in the parent document.
// Returns 0 if this is the top level document.
- Element* ownerElement() const;
+ HTMLFrameOwnerElement* ownerElement() const;
String title() const { return m_title; }
void setTitle(const String&, Element* titleElement = 0);
diff --git a/WebCore/dom/Element.cpp b/WebCore/dom/Element.cpp
index 3dbd880..a1ff56d 100644
--- a/WebCore/dom/Element.cpp
+++ b/WebCore/dom/Element.cpp
@@ -70,8 +70,8 @@ PassRefPtr<Element> Element::create(const QualifiedName& tagName, Document* docu
Element::~Element()
{
- if (namedAttrMap)
- namedAttrMap->detachFromElement();
+ if (m_attributeMap)
+ m_attributeMap->detachFromElement();
}
inline ElementRareData* Element::rareData() const
@@ -165,9 +165,9 @@ PassRefPtr<Element> Element::cloneElementWithoutChildren()
void Element::removeAttribute(const QualifiedName& name, ExceptionCode& ec)
{
- if (namedAttrMap) {
+ if (m_attributeMap) {
ec = 0;
- namedAttrMap->removeNamedItem(name, ec);
+ m_attributeMap->removeNamedItem(name, ec);
if (ec == NOT_FOUND_ERR)
ec = 0;
}
@@ -195,12 +195,6 @@ void Element::setBooleanAttribute(const QualifiedName& name, bool b)
}
}
-// Virtual function, defined in base class.
-NamedNodeMap* Element::attributes() const
-{
- return attributes(false);
-}
-
Node::NodeType Element::nodeType() const
{
return ELEMENT_NODE;
@@ -526,8 +520,8 @@ const AtomicString& Element::getAttribute(const String& name) const
}
#endif
- if (namedAttrMap) {
- if (Attribute* attribute = namedAttrMap->getAttributeItem(name, ignoreCase))
+ if (m_attributeMap) {
+ if (Attribute* attribute = m_attributeMap->getAttributeItem(name, ignoreCase))
return attribute->value();
}
@@ -560,9 +554,9 @@ void Element::setAttribute(const AtomicString& name, const AtomicString& value,
updateId(old ? old->value() : nullAtom, value);
if (old && value.isNull())
- namedAttrMap->removeAttribute(old->name());
+ m_attributeMap->removeAttribute(old->name());
else if (!old && !value.isNull())
- namedAttrMap->addAttribute(createAttribute(QualifiedName(nullAtom, localName, nullAtom), value));
+ m_attributeMap->addAttribute(createAttribute(QualifiedName(nullAtom, localName, nullAtom), value));
else if (old && !value.isNull()) {
old->setValue(value);
attributeChanged(old);
@@ -589,9 +583,9 @@ void Element::setAttribute(const QualifiedName& name, const AtomicString& value,
updateId(old ? old->value() : nullAtom, value);
if (old && value.isNull())
- namedAttrMap->removeAttribute(name);
+ m_attributeMap->removeAttribute(name);
else if (!old && !value.isNull())
- namedAttrMap->addAttribute(createAttribute(name, value));
+ m_attributeMap->addAttribute(createAttribute(name, value));
else if (old) {
old->setValue(value);
attributeChanged(old);
@@ -670,38 +664,38 @@ void Element::setAttributeMap(PassRefPtr<NamedNodeMap> list, FragmentScriptingPe
// If setting the whole map changes the id attribute, we need to call updateId.
const QualifiedName& idName = document()->idAttributeName();
- Attribute* oldId = namedAttrMap ? namedAttrMap->getAttributeItem(idName) : 0;
+ Attribute* oldId = m_attributeMap ? m_attributeMap->getAttributeItem(idName) : 0;
Attribute* newId = list ? list->getAttributeItem(idName) : 0;
if (oldId || newId)
updateId(oldId ? oldId->value() : nullAtom, newId ? newId->value() : nullAtom);
- if (namedAttrMap)
- namedAttrMap->m_element = 0;
+ if (m_attributeMap)
+ m_attributeMap->m_element = 0;
- namedAttrMap = list;
+ m_attributeMap = list;
- if (namedAttrMap) {
- namedAttrMap->m_element = this;
+ if (m_attributeMap) {
+ m_attributeMap->m_element = this;
// If the element is created as result of a paste or drag-n-drop operation
// we want to remove all the script and event handlers.
if (scriptingPermission == FragmentScriptingNotAllowed) {
unsigned i = 0;
- while (i < namedAttrMap->length()) {
- const QualifiedName& attributeName = namedAttrMap->m_attributes[i]->name();
+ while (i < m_attributeMap->length()) {
+ const QualifiedName& attributeName = m_attributeMap->m_attributes[i]->name();
if (isEventHandlerAttribute(attributeName)) {
- namedAttrMap->m_attributes.remove(i);
+ m_attributeMap->m_attributes.remove(i);
continue;
}
- if (isAttributeToRemove(attributeName, namedAttrMap->m_attributes[i]->value()))
- namedAttrMap->m_attributes[i]->setValue(nullAtom);
+ if (isAttributeToRemove(attributeName, m_attributeMap->m_attributes[i]->value()))
+ m_attributeMap->m_attributes[i]->setValue(nullAtom);
i++;
}
}
- unsigned len = namedAttrMap->length();
+ unsigned len = m_attributeMap->length();
for (unsigned i = 0; i < len; i++)
- attributeChanged(namedAttrMap->m_attributes[i].get());
+ attributeChanged(m_attributeMap->m_attributes[i].get());
// FIXME: What about attributes that were in the old map that are not in the new map?
}
}
@@ -716,7 +710,7 @@ bool Element::hasAttributes() const
updateAnimatedSVGAttribute(anyQName());
#endif
- return namedAttrMap && namedAttrMap->length() > 0;
+ return m_attributeMap && m_attributeMap->length();
}
String Element::nodeName() const
@@ -759,7 +753,7 @@ KURL Element::baseURI() const
void Element::createAttributeMap() const
{
- namedAttrMap = NamedNodeMap::create(const_cast<Element*>(this));
+ m_attributeMap = NamedNodeMap::create(const_cast<Element*>(this));
}
bool Element::isURLAttribute(Attribute*) const
@@ -792,8 +786,8 @@ void Element::insertedIntoDocument()
ContainerNode::insertedIntoDocument();
if (hasID()) {
- if (NamedNodeMap* attrs = namedAttrMap.get()) {
- Attribute* idItem = attrs->getAttributeItem(document()->idAttributeName());
+ if (m_attributeMap) {
+ Attribute* idItem = m_attributeMap->getAttributeItem(document()->idAttributeName());
if (idItem && !idItem->isNull())
updateId(nullAtom, idItem->value());
}
@@ -803,8 +797,8 @@ void Element::insertedIntoDocument()
void Element::removedFromDocument()
{
if (hasID()) {
- if (NamedNodeMap* attrs = namedAttrMap.get()) {
- Attribute* idItem = attrs->getAttributeItem(document()->idAttributeName());
+ if (m_attributeMap) {
+ Attribute* idItem = m_attributeMap->getAttributeItem(document()->idAttributeName());
if (idItem && !idItem->isNull())
updateId(idItem->value(), nullAtom);
}
@@ -1231,8 +1225,8 @@ void Element::removeAttribute(const String& name, ExceptionCode& ec)
{
String localName = shouldIgnoreAttributeCase(this) ? name.lower() : name;
- if (namedAttrMap) {
- namedAttrMap->removeNamedItem(localName, ec);
+ if (m_attributeMap) {
+ m_attributeMap->removeNamedItem(localName, ec);
if (ec == NOT_FOUND_ERR)
ec = 0;
}
@@ -1532,14 +1526,28 @@ DOMStringMap* Element::dataset()
KURL Element::getURLAttribute(const QualifiedName& name) const
{
#if !ASSERT_DISABLED
- if (namedAttrMap) {
- if (Attribute* attribute = namedAttrMap->getAttributeItem(name))
+ if (m_attributeMap) {
+ if (Attribute* attribute = m_attributeMap->getAttributeItem(name))
ASSERT(isURLAttribute(attribute));
}
#endif
return document()->completeURL(deprecatedParseURL(getAttribute(name)));
}
+KURL Element::getNonEmptyURLAttribute(const QualifiedName& name) const
+{
+#if !ASSERT_DISABLED
+ if (m_attributeMap) {
+ if (Attribute* attribute = m_attributeMap->getAttributeItem(name))
+ ASSERT(isURLAttribute(attribute));
+ }
+#endif
+ String value = deprecatedParseURL(getAttribute(name));
+ if (value.isEmpty())
+ return KURL();
+ return document()->completeURL(value);
+}
+
int Element::getIntegralAttribute(const QualifiedName& attributeName) const
{
return getAttribute(attributeName).string().toInt();
diff --git a/WebCore/dom/Element.h b/WebCore/dom/Element.h
index 7dd7d80..a66809a 100644
--- a/WebCore/dom/Element.h
+++ b/WebCore/dom/Element.h
@@ -198,15 +198,13 @@ public:
// use a static AtomicString value instead to avoid the conversion overhead.
void setCStringAttribute(const QualifiedName&, const char* cStringValue);
- virtual NamedNodeMap* attributes() const;
- NamedNodeMap* attributes(bool readonly) const;
+ NamedNodeMap* attributes(bool readonly = false) const;
// This method is called whenever an attribute is added, changed or removed.
virtual void attributeChanged(Attribute*, bool preserveDecls = false);
- // not part of the DOM
void setAttributeMap(PassRefPtr<NamedNodeMap>, FragmentScriptingPermission = FragmentScriptingAllowed);
- NamedNodeMap* attributeMap() const { return namedAttrMap.get(); }
+ NamedNodeMap* attributeMap() const { return m_attributeMap.get(); }
virtual void copyNonAttributeProperties(const Element* /*source*/) { }
@@ -223,7 +221,10 @@ public:
virtual void accessKeyAction(bool /*sendToAnyEvent*/) { }
virtual bool isURLAttribute(Attribute*) const;
+
KURL getURLAttribute(const QualifiedName&) const;
+ KURL getNonEmptyURLAttribute(const QualifiedName&) const;
+
virtual const QualifiedName& imageSourceAttributeName() const;
virtual String target() const { return String(); }
@@ -348,8 +349,8 @@ private:
ElementRareData* rareData() const;
ElementRareData* ensureRareData();
-protected:
- mutable RefPtr<NamedNodeMap> namedAttrMap;
+private:
+ mutable RefPtr<NamedNodeMap> m_attributeMap;
};
inline bool Node::hasTagName(const QualifiedName& name) const
@@ -383,9 +384,9 @@ inline NamedNodeMap* Element::attributes(bool readonly) const
updateAnimatedSVGAttribute(anyQName());
#endif
- if (!readonly && !namedAttrMap)
+ if (!readonly && !m_attributeMap)
createAttributeMap();
- return namedAttrMap.get();
+ return m_attributeMap.get();
}
inline void Element::updateId(const AtomicString& oldId, const AtomicString& newId)
@@ -405,13 +406,13 @@ inline void Element::updateId(const AtomicString& oldId, const AtomicString& new
inline bool Element::fastHasAttribute(const QualifiedName& name) const
{
- return namedAttrMap && namedAttrMap->getAttributeItem(name);
+ return m_attributeMap && m_attributeMap->getAttributeItem(name);
}
inline const AtomicString& Element::fastGetAttribute(const QualifiedName& name) const
{
- if (namedAttrMap) {
- if (Attribute* attribute = namedAttrMap->getAttributeItem(name))
+ if (m_attributeMap) {
+ if (Attribute* attribute = m_attributeMap->getAttributeItem(name))
return attribute->value();
}
return nullAtom;
@@ -420,7 +421,7 @@ inline const AtomicString& Element::fastGetAttribute(const QualifiedName& name)
inline const AtomicString& Element::idForStyleResolution() const
{
ASSERT(hasID());
- return namedAttrMap->idForStyleResolution();
+ return m_attributeMap->idForStyleResolution();
}
inline bool Element::isIdAttributeName(const QualifiedName& attributeName) const
diff --git a/WebCore/dom/EventListener.h b/WebCore/dom/EventListener.h
index ff02204..96bc858 100644
--- a/WebCore/dom/EventListener.h
+++ b/WebCore/dom/EventListener.h
@@ -21,7 +21,6 @@
#ifndef EventListener_h
#define EventListener_h
-#include "PlatformString.h"
#include <wtf/RefCounted.h>
namespace JSC {
diff --git a/WebCore/dom/MappedAttributeEntry.h b/WebCore/dom/MappedAttributeEntry.h
index f28f182..aa1cd1f 100644
--- a/WebCore/dom/MappedAttributeEntry.h
+++ b/WebCore/dom/MappedAttributeEntry.h
@@ -4,6 +4,7 @@
* (C) 2001 Peter Kelly (pmk@post.com)
* (C) 2001 Dirk Mueller (mueller@kde.org)
* Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc.
+ * Copyright (C) 2010 Fran�ois Sausset (sausset@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
@@ -44,6 +45,9 @@ enum MappedAttributeEntry {
#if ENABLE(SVG)
, eSVG
#endif
+#if ENABLE(MATHML)
+ , eMathML
+#endif
// When adding new entries, make sure to keep eLastEntry at the end of the list.
, eLastEntry
};
diff --git a/WebCore/dom/MessagePort.h b/WebCore/dom/MessagePort.h
index ae1eb22..65332b8 100644
--- a/WebCore/dom/MessagePort.h
+++ b/WebCore/dom/MessagePort.h
@@ -29,10 +29,8 @@
#include "AtomicStringHash.h"
#include "EventListener.h"
-#include "EventNames.h"
#include "EventTarget.h"
#include "MessagePortChannel.h"
-#include <wtf/HashMap.h>
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
#include <wtf/PassRefPtr.h>
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index 77a88e7..73eb926 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -45,6 +45,7 @@
#include "ContextMenuController.h"
#include "DOMImplementation.h"
#include "Document.h"
+#include "DocumentType.h"
#include "DynamicNodeList.h"
#include "Element.h"
#include "Event.h"
@@ -74,6 +75,7 @@
#include "RenderBox.h"
#include "ScriptController.h"
#include "SelectorNodeList.h"
+#include "StaticNodeList.h"
#include "StringBuilder.h"
#include "TagNodeList.h"
#include "Text.h"
@@ -1735,12 +1737,13 @@ KURL Node::baseURI() const
return parentNode() ? parentNode()->baseURI() : KURL();
}
-bool Node::isEqualNode(Node *other) const
+bool Node::isEqualNode(Node* other) const
{
if (!other)
return false;
- if (nodeType() != other->nodeType())
+ NodeType nodeType = this->nodeType();
+ if (nodeType != other->nodeType())
return false;
if (nodeName() != other->nodeName())
@@ -1758,17 +1761,17 @@ bool Node::isEqualNode(Node *other) const
if (nodeValue() != other->nodeValue())
return false;
- NamedNodeMap *attrs = attributes();
- NamedNodeMap *otherAttrs = other->attributes();
+ NamedNodeMap* attributes = this->attributes();
+ NamedNodeMap* otherAttributes = other->attributes();
- if (!attrs && otherAttrs)
+ if (!attributes && otherAttributes)
return false;
- if (attrs && !attrs->mapsEquivalent(otherAttrs))
+ if (attributes && !attributes->mapsEquivalent(otherAttributes))
return false;
- Node *child = firstChild();
- Node *otherChild = other->firstChild();
+ Node* child = firstChild();
+ Node* otherChild = other->firstChild();
while (child) {
if (!child->isEqualNode(otherChild))
@@ -1781,8 +1784,33 @@ bool Node::isEqualNode(Node *other) const
if (otherChild)
return false;
- // FIXME: For DocumentType nodes we should check equality on
- // the entities and notations NamedNodeMaps as well.
+ if (nodeType == DOCUMENT_TYPE_NODE) {
+ const DocumentType* documentTypeThis = static_cast<const DocumentType*>(this);
+ const DocumentType* documentTypeOther = static_cast<const DocumentType*>(other);
+
+ if (documentTypeThis->publicId() != documentTypeOther->publicId())
+ return false;
+
+ if (documentTypeThis->systemId() != documentTypeOther->systemId())
+ return false;
+
+ if (documentTypeThis->internalSubset() != documentTypeOther->internalSubset())
+ return false;
+
+ NamedNodeMap* entities = documentTypeThis->entities();
+ NamedNodeMap* otherEntities = documentTypeOther->entities();
+ if (!entities && otherEntities)
+ return false;
+ if (entities && !entities->mapsEquivalent(otherEntities))
+ return false;
+
+ NamedNodeMap* notations = documentTypeThis->notations();
+ NamedNodeMap* otherNotations = documentTypeOther->notations();
+ if (!notations && otherNotations)
+ return false;
+ if (notations && !notations->mapsEquivalent(otherNotations))
+ return false;
+ }
return true;
}
@@ -3119,6 +3147,8 @@ void Node::defaultEventHandler(Event* event)
if (startNode && startNode->renderer())
if (Frame* frame = document()->frame())
frame->eventHandler()->defaultWheelEventHandler(startNode, wheelEvent);
+ } else if (event->type() == eventNames().webkitEditableContentChangedEvent) {
+ dispatchEvent(Event::create(eventNames().inputEvent, true, false));
}
}
diff --git a/WebCore/dom/NodeFilter.h b/WebCore/dom/NodeFilter.h
index 53b32e1..d2022bc 100644
--- a/WebCore/dom/NodeFilter.h
+++ b/WebCore/dom/NodeFilter.h
@@ -26,7 +26,6 @@
#define NodeFilter_h
#include "NodeFilterCondition.h"
-#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
namespace WebCore {
diff --git a/WebCore/dom/NodeRareData.h b/WebCore/dom/NodeRareData.h
index d88f964..4d80cee 100644
--- a/WebCore/dom/NodeRareData.h
+++ b/WebCore/dom/NodeRareData.h
@@ -24,10 +24,8 @@
#include "ClassNodeList.h"
#include "DynamicNodeList.h"
-#include "EventListener.h"
#include "NameNodeList.h"
#include "QualifiedName.h"
-#include "RegisteredEventListener.h"
#include "StringHash.h"
#include "TagNodeList.h"
#include <wtf/HashSet.h>
diff --git a/WebCore/dom/RegisteredEventListener.h b/WebCore/dom/RegisteredEventListener.h
index c34a341..12483fa 100644
--- a/WebCore/dom/RegisteredEventListener.h
+++ b/WebCore/dom/RegisteredEventListener.h
@@ -24,8 +24,8 @@
#ifndef RegisteredEventListener_h
#define RegisteredEventListener_h
-#include "AtomicString.h"
#include "EventListener.h"
+#include <wtf/RefPtr.h>
namespace WebCore {
diff --git a/WebCore/dom/SelectorNodeList.cpp b/WebCore/dom/SelectorNodeList.cpp
index bc97034..5beaaee 100644
--- a/WebCore/dom/SelectorNodeList.cpp
+++ b/WebCore/dom/SelectorNodeList.cpp
@@ -35,6 +35,7 @@
#include "Document.h"
#include "Element.h"
#include "HTMLNames.h"
+#include "StaticNodeList.h"
namespace WebCore {
diff --git a/WebCore/dom/SelectorNodeList.h b/WebCore/dom/SelectorNodeList.h
index 8240189..8357034 100644
--- a/WebCore/dom/SelectorNodeList.h
+++ b/WebCore/dom/SelectorNodeList.h
@@ -29,11 +29,13 @@
#ifndef SelectorNodeList_h
#define SelectorNodeList_h
-#include "StaticNodeList.h"
+#include <wtf/PassRefPtr.h>
namespace WebCore {
class CSSSelectorList;
+ class Node;
+ class StaticNodeList;
PassRefPtr<StaticNodeList> createSelectorNodeList(Node* rootNode, const CSSSelectorList&);
diff --git a/WebCore/dom/SpaceSplitString.h b/WebCore/dom/SpaceSplitString.h
index 2ef3fc4..9fd1832 100644
--- a/WebCore/dom/SpaceSplitString.h
+++ b/WebCore/dom/SpaceSplitString.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2010 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,6 +23,7 @@
#include "AtomicString.h"
#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
@@ -64,9 +65,9 @@ namespace WebCore {
class SpaceSplitString {
public:
SpaceSplitString() { }
- SpaceSplitString(const String& string, bool shouldFoldCase) : m_data(new SpaceSplitStringData(string, shouldFoldCase)) { }
+ SpaceSplitString(const String& string, bool shouldFoldCase) : m_data(adoptPtr(new SpaceSplitStringData(string, shouldFoldCase))) { }
- void set(const String& string, bool shouldFoldCase) { m_data.set(new SpaceSplitStringData(string, shouldFoldCase)); }
+ void set(const String& string, bool shouldFoldCase) { m_data = adoptPtr(new SpaceSplitStringData(string, shouldFoldCase)); }
void clear() { m_data.clear(); }
bool contains(const AtomicString& string) const { return m_data && m_data->contains(string); }
diff --git a/WebCore/dom/StyleElement.cpp b/WebCore/dom/StyleElement.cpp
index a323e16..580f318 100644
--- a/WebCore/dom/StyleElement.cpp
+++ b/WebCore/dom/StyleElement.cpp
@@ -36,13 +36,13 @@ StyleElement::StyleElement()
StyleSheet* StyleElement::sheet(Element* e)
{
if (!m_sheet)
- createSheet(e);
+ createSheet(e, 0);
return m_sheet.get();
}
void StyleElement::insertedIntoDocument(Document*, Element* element)
{
- process(element);
+ process(element, 0);
}
void StyleElement::removedFromDocument(Document* document)
@@ -56,7 +56,7 @@ void StyleElement::removedFromDocument(Document* document)
document->updateStyleSelector();
}
-void StyleElement::process(Element* e)
+void StyleElement::process(Element* e, int startLineNumber)
{
if (!e || !e->inDocument())
return;
@@ -82,10 +82,10 @@ void StyleElement::process(Element* e)
}
ASSERT(p == text + resultLength);
- createSheet(e, sheetText);
+ createSheet(e, startLineNumber, sheetText);
}
-void StyleElement::createSheet(Element* e, const String& text)
+void StyleElement::createSheet(Element* e, int startLineNumber, const String& text)
{
Document* document = e->document();
if (m_sheet) {
@@ -104,7 +104,7 @@ void StyleElement::createSheet(Element* e, const String& text)
document->addPendingSheet();
setLoading(true);
m_sheet = CSSStyleSheet::create(e, String(), KURL(), document->inputEncoding());
- m_sheet->parseString(text, !document->inCompatMode());
+ m_sheet->parseStringAtLine(text, !document->inCompatMode(), startLineNumber);
m_sheet->setMedia(mediaList.get());
m_sheet->setTitle(e->title());
setLoading(false);
diff --git a/WebCore/dom/StyleElement.h b/WebCore/dom/StyleElement.h
index 9d3ac84..4ec10c4 100644
--- a/WebCore/dom/StyleElement.h
+++ b/WebCore/dom/StyleElement.h
@@ -24,6 +24,7 @@
namespace WebCore {
+class Document;
class Element;
class StyleElement {
@@ -41,9 +42,9 @@ protected:
void insertedIntoDocument(Document*, Element*);
void removedFromDocument(Document*);
- void process(Element*);
+ void process(Element*, int startLineNumber);
- void createSheet(Element* e, const String& text = String());
+ void createSheet(Element* e, int startLineNumber, const String& text = String());
protected:
RefPtr<CSSStyleSheet> m_sheet;
diff --git a/WebCore/dom/StyledElement.cpp b/WebCore/dom/StyledElement.cpp
index 994b084..9b22f1d 100644
--- a/WebCore/dom/StyledElement.cpp
+++ b/WebCore/dom/StyledElement.cpp
@@ -148,8 +148,8 @@ void StyledElement::attributeChanged(Attribute* attr, bool preserveDecls)
if (attr->decl() && !preserveDecls) {
attr->setDecl(0);
setNeedsStyleRecalc();
- if (namedAttrMap)
- mappedAttributes()->declRemoved();
+ if (attributeMap())
+ attributeMap()->declRemoved();
}
bool checkDecl = true;
@@ -158,8 +158,8 @@ void StyledElement::attributeChanged(Attribute* attr, bool preserveDecls)
if (preserveDecls) {
if (attr->decl()) {
setNeedsStyleRecalc();
- if (namedAttrMap)
- mappedAttributes()->declAdded();
+ if (attributeMap())
+ attributeMap()->declAdded();
checkDecl = false;
}
} else if (!attr->isNull() && entry != eNone) {
@@ -167,8 +167,8 @@ void StyledElement::attributeChanged(Attribute* attr, bool preserveDecls)
if (decl) {
attr->setDecl(decl);
setNeedsStyleRecalc();
- if (namedAttrMap)
- mappedAttributes()->declAdded();
+ if (attributeMap())
+ attributeMap()->declAdded();
checkDecl = false;
} else
needToParse = true;
@@ -191,8 +191,8 @@ void StyledElement::attributeChanged(Attribute* attr, bool preserveDecls)
attr->decl()->setMappedState(entry, attr->name(), attr->value());
attr->decl()->setParent(0);
attr->decl()->setNode(0);
- if (namedAttrMap)
- mappedAttributes()->declAdded();
+ if (attributeMap())
+ attributeMap()->declAdded();
}
updateAfterAttributeChanged(attr);
@@ -215,12 +215,13 @@ void StyledElement::classAttributeChanged(const AtomicString& newClassString)
if (!isClassWhitespace(characters[i]))
break;
}
- setHasClass(i < length);
- if (namedAttrMap) {
- if (i < length)
- mappedAttributes()->setClass(newClassString);
- else
- mappedAttributes()->clearClass();
+ bool hasClass = i < length;
+ setHasClass(hasClass);
+ if (hasClass)
+ attributes()->setClass(newClassString);
+ else {
+ if (attributeMap())
+ attributeMap()->clearClass();
}
setNeedsStyleRecalc();
dispatchSubtreeModifiedEvent();
@@ -230,13 +231,13 @@ void StyledElement::parseMappedAttribute(Attribute* attr)
{
if (isIdAttributeName(attr->name())) {
setHasID(!attr->isNull());
- if (namedAttrMap) {
+ if (attributeMap()) {
if (attr->isNull())
- namedAttrMap->setIdForStyleResolution(nullAtom);
+ attributeMap()->setIdForStyleResolution(nullAtom);
else if (document()->inCompatMode())
- namedAttrMap->setIdForStyleResolution(attr->value().lower());
+ attributeMap()->setIdForStyleResolution(attr->value().lower());
else
- namedAttrMap->setIdForStyleResolution(attr->value());
+ attributeMap()->setIdForStyleResolution(attr->value());
}
setNeedsStyleRecalc();
} else if (attr->name() == classAttr)
diff --git a/WebCore/dom/StyledElement.h b/WebCore/dom/StyledElement.h
index 6facce7..8040dbf 100644
--- a/WebCore/dom/StyledElement.h
+++ b/WebCore/dom/StyledElement.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, 2009, 2010 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,10 +26,8 @@
#define StyledElement_h
#include "CSSMutableStyleDeclaration.h"
-#include "CSSPrimitiveValue.h"
#include "Element.h"
#include "MappedAttributeEntry.h"
-#include "NamedNodeMap.h"
namespace WebCore {
@@ -40,10 +38,7 @@ class StyledElement : public Element {
public:
virtual ~StyledElement();
- NamedNodeMap* mappedAttributes() { return namedAttrMap.get(); }
- const NamedNodeMap* mappedAttributes() const { return namedAttrMap.get(); }
-
- bool hasMappedAttributes() const { return namedAttrMap && mappedAttributes()->hasMappedAttributes(); }
+ bool hasMappedAttributes() const { return attributeMap() && attributeMap()->hasMappedAttributes(); }
bool isMappedAttribute(const QualifiedName& name) const { MappedAttributeEntry res = eNone; mapToEntry(name, res); return res != eNone; }
void addCSSLength(Attribute*, int id, const String& value);
@@ -61,12 +56,12 @@ public:
CSSMutableStyleDeclaration* inlineStyleDecl() const { return m_inlineStyleDecl.get(); }
virtual bool canHaveAdditionalAttributeStyleDecls() const { return false; }
- virtual void additionalAttributeStyleDecls(Vector<CSSMutableStyleDeclaration*>&) {};
+ virtual void additionalAttributeStyleDecls(Vector<CSSMutableStyleDeclaration*>&) { }
CSSMutableStyleDeclaration* getInlineStyleDecl();
CSSStyleDeclaration* style();
void invalidateStyleAttribute();
- const SpaceSplitString& classNames() const { ASSERT(hasClass()); ASSERT(mappedAttributes()); return mappedAttributes()->classNames(); }
+ const SpaceSplitString& classNames() const;
virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
@@ -101,6 +96,13 @@ private:
RefPtr<CSSMutableStyleDeclaration> m_inlineStyleDecl;
};
+inline const SpaceSplitString& StyledElement::classNames() const
+{
+ ASSERT(hasClass());
+ ASSERT(attributeMap());
+ return attributeMap()->classNames();
+}
+
inline void StyledElement::invalidateStyleAttribute()
{
clearIsStyleAttributeValid();
diff --git a/WebCore/dom/Traversal.h b/WebCore/dom/Traversal.h
index fc4403f..8b4f764 100644
--- a/WebCore/dom/Traversal.h
+++ b/WebCore/dom/Traversal.h
@@ -26,7 +26,6 @@
#define Traversal_h
#include "ScriptState.h"
-#include <wtf/Forward.h>
#include <wtf/RefPtr.h>
namespace WebCore {
diff --git a/WebCore/dom/make_names.pl b/WebCore/dom/make_names.pl
index a675438..9e0784a 100755
--- a/WebCore/dom/make_names.pl
+++ b/WebCore/dom/make_names.pl
@@ -37,17 +37,26 @@ use IO::File;
use InFilesParser;
use Switch;
+sub readTags($$);
+sub readAttrs($$);
+
my $printFactory = 0;
my $printWrapperFactory = 0;
my $printWrapperFactoryV8 = 0;
my $tagsFile = "";
my $attrsFile = "";
my $outputDir = ".";
-my %tags = ();
-my %attrs = ();
+my %parsedTags = ();
+my %parsedAttrs = ();
+my %enabledTags = ();
+my %enabledAttrs = ();
+my %allTags = ();
+my %allAttrs = ();
my %parameters = ();
my $extraDefines = 0;
+
require Config;
+
my $gccLocation = "";
if ($ENV{CC}) {
$gccLocation = $ENV{CC};
@@ -71,8 +80,15 @@ GetOptions(
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);
+if (length($tagsFile)) {
+ %allTags = %{readTags($tagsFile, 0)};
+ %enabledTags = %{readTags($tagsFile, 1)};
+}
+
+if (length($attrsFile)) {
+ %allAttrs = %{readAttrs($attrsFile, 0)};
+ %enabledAttrs = %{readAttrs($attrsFile, 1)};
+}
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};
@@ -149,16 +165,16 @@ sub tagsHandler
$tag =~ s/-/_/g;
# Initialize default property values.
- $tags{$tag} = { defaultTagPropertyHash($tag) } if !defined($tags{$tag});
+ $parsedTags{$tag} = { defaultTagPropertyHash($tag) } if !defined($parsedTags{$tag});
if ($property) {
- die "Unknown property $property for tag $tag\n" if !defined($tags{$tag}{$property});
+ die "Unknown property $property for tag $tag\n" if !defined($parsedTags{$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};
+ $parsedTags{$tag}{JSInterfaceName} = $value if $property eq "interfaceName" && $parsedTags{$tag}{JSInterfaceName} eq $parsedTags{$tag}{interfaceName};
- $tags{$tag}{$property} = $value;
+ $parsedTags{$tag}{$property} = $value;
}
}
@@ -169,11 +185,11 @@ sub attrsHandler
$attr =~ s/-/_/g;
# Initialize default properties' values.
- $attrs{$attr} = {} if !defined($attrs{$attr});
+ $parsedAttrs{$attr} = {} if !defined($parsedAttrs{$attr});
if ($property) {
- die "Unknown property $property for attribute $attr\n" if !defined($attrs{$attr}{$property});
- $attrs{$attr}{$property} = $value;
+ die "Unknown property $property for attribute $attr\n" if !defined($parsedAttrs{$attr}{$property});
+ $parsedAttrs{$attr}{$property} = $value;
}
}
@@ -190,39 +206,43 @@ sub parametersHandler
## Support routines
-sub readNames
+sub preprocessorCommand()
{
- my ($namesFile, $type) = @_;
+ return $preprocessor if $extraDefines eq 0;
+ return $preprocessor . " -D" . join(" -D", split(" ", $extraDefines));
+}
- my $names = new IO::File;
+sub readNames($$$$)
+{
+ my ($namesFile, $hashToFillRef, $handler, $usePreprocessor) = @_;
- if ($extraDefines eq 0) {
- open($names, $preprocessor . " " . $namesFile . "|") or die "Failed to open file: $namesFile";
+ my $names = new IO::File;
+ if ($usePreprocessor) {
+ open($names, preprocessorCommand() . " " . $namesFile . "|") or die "Failed to open file: $namesFile";
} else {
- open($names, $preprocessor . " -D" . join(" -D", split(" ", $extraDefines)) . " " . $namesFile . "|") or die "Failed to open file: $namesFile";
+ open($names, $namesFile) or die "Failed to open file: $namesFile";
}
- # Store hashes keys count to know if some insertion occured.
- my $tagsCount = keys %tags;
- my $attrsCount = keys %attrs;
-
my $InParser = InFilesParser->new();
-
- switch ($type) {
- case "tags" {
- $InParser->parse($names, \&parametersHandler, \&tagsHandler);
- }
- case "attrs" {
- $InParser->parse($names, \&parametersHandler, \&attrsHandler);
- }
- else {
- die "Do not know how to parse $type";
- }
- }
+ $InParser->parse($names, \&parametersHandler, $handler);
close($names);
+ die "Failed to read names from file: $namesFile" if (keys %{$hashToFillRef} == 0);
+ return $hashToFillRef;
+}
- die "Failed to read names from file: $namesFile" if ((keys %tags == $tagsCount) && (keys %attrs == $attrsCount));
+sub readAttrs($$)
+{
+ my ($namesFile, $usePreprocessor) = @_;
+ %parsedAttrs = ();
+ return readNames($namesFile, \%parsedAttrs, \&attrsHandler, $usePreprocessor);
+}
+
+sub readTags($$)
+{
+ my ($namesFile, $usePreprocessor) = @_;
+ %parsedTags = ();
+ return readNames($namesFile, \%parsedTags, \&tagsHandler, $usePreprocessor);
}
sub printMacros
@@ -246,13 +266,13 @@ sub usesDefaultWrapper
sub buildConstructorMap
{
my %tagConstructorMap = ();
- for my $tagName (keys %tags) {
- my $interfaceName = $tags{$tagName}{interfaceName};
+ for my $tagName (keys %enabledTags) {
+ my $interfaceName = $enabledTags{$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 ($enabledTags{$tagName}{mapToTagName}) {
+ die "Cannot handle multiple mapToTagName for $tagName\n" if $enabledTags{$enabledTags{$tagName}{mapToTagName}}{mapToTagName};
+ $interfaceName = $enabledTags{ $enabledTags{$tagName}{mapToTagName} }{interfaceName};
}
# Chop the string to keep the interesting part.
@@ -272,10 +292,10 @@ sub printConstructorSignature
print F "static PassRefPtr<$parameters{namespace}Element> ${constructorName}Constructor(const QualifiedName& $constructorTagName, Document* document";
if ($parameters{namespace} eq "HTML") {
print F ", HTMLFormElement*";
- print F " formElement" if $tags{$tagName}{constructorNeedsFormElement};
+ print F " formElement" if $enabledTags{$tagName}{constructorNeedsFormElement};
}
print F ", bool";
- print F " createdByParser" if $tags{$tagName}{constructorNeedsCreatedByParser};
+ print F " createdByParser" if $enabledTags{$tagName}{constructorNeedsCreatedByParser};
print F ")\n{\n";
}
@@ -287,7 +307,7 @@ sub printConstructorInterior
my ($F, $tagName, $interfaceName, $constructorTagName) = @_;
# Handle media elements.
- if ($tags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
print F <<END
Settings* settings = document->settings();
if (!MediaPlayer::isAvailable() || (settings && !settings->isMediaEnabled()))
@@ -300,15 +320,15 @@ END
my $newPrefix = "";
my $createSuffix = "::create";
- if ($tags{$tagName}{createWithNew}) {
+ if ($enabledTags{$tagName}{createWithNew}) {
$newPrefix = "new ";
$createSuffix = "";
}
# 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 ", formElement" if $enabledTags{$tagName}{constructorNeedsFormElement};
+ print F ", createdByParser" if $enabledTags{$tagName}{constructorNeedsCreatedByParser};
print F ");\n}\n\n";
}
@@ -317,20 +337,18 @@ sub printConstructors
my ($F, $tagConstructorMapRef) = @_;
my %tagConstructorMap = %$tagConstructorMapRef;
- 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 = $enabledTags{$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}) || $enabledTags{$tagName}{mapToTagName});
$uniqueTags{$interfaceName} = '1';
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $enabledTags{$tagName}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n\n";
@@ -346,14 +364,12 @@ sub printConstructors
# 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 ($enabledTags{$tagName}{mapToTagName}) {
+ my $mappedName = $enabledTags{$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, $enabledTags{$mappedName}{interfaceName}, "QualifiedName(tagName.prefix(), ${mappedName}Tag.localName(), tagName.namespaceURI())");
}
}
-
- print F "#endif\n" if $parameters{guardFactoryWith};
}
sub printFunctionInits
@@ -363,14 +379,14 @@ sub printFunctionInits
for my $tagName (sort keys %tagConstructorMap) {
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $enabledTags{$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 ($enabledTags{$tagName}{mapToTagName}) {
+ print F " addTag(${tagName}Tag, $enabledTags{$tagName}{mapToTagName}To${tagName}Constructor);\n";
} else {
print F " addTag(${tagName}Tag, $tagConstructorMap{$tagName}Constructor);\n";
}
@@ -456,22 +472,22 @@ sub printNamesHeaderFile
print F "// Namespace\n";
print F "extern const WebCore::AtomicString ${lowerNamespace}NamespaceURI;\n\n";
- if (keys %tags) {
+ if (keys %allTags) {
print F "// Tags\n";
- printMacros($F, "extern const WebCore::QualifiedName", "Tag", \%tags);
+ printMacros($F, "extern const WebCore::QualifiedName", "Tag", \%allTags);
}
- if (keys %attrs) {
+ if (keys %allAttrs) {
print F "// Attributes\n";
- printMacros($F, "extern const WebCore::QualifiedName", "Attr", \%attrs);
+ printMacros($F, "extern const WebCore::QualifiedName", "Attr", \%allAttrs);
}
print F "#endif\n\n";
- if (keys %tags) {
+ if (keys %allTags) {
print F "WebCore::QualifiedName** get$parameters{namespace}Tags(size_t* size);\n";
}
- if (keys %attrs) {
+ if (keys %allAttrs) {
print F "WebCore::QualifiedName** get$parameters{namespace}Attrs(size_t* size);\n";
}
@@ -511,35 +527,35 @@ using namespace WebCore;
DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI, \"$parameters{namespaceURI}\")
";
- if (keys %tags) {
+ if (keys %allTags) {
print F "// Tags\n";
- for my $name (sort keys %tags) {
+ for my $name (sort keys %allTags) {
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";
- for my $name (sort keys %tags) {
+ for my $name (sort keys %allTags) {
print F " (WebCore::QualifiedName*)&${name}Tag,\n";
}
print F " };\n";
- print F " *size = ", scalar(keys %tags), ";\n";
+ print F " *size = ", scalar(keys %allTags), ";\n";
print F " return $parameters{namespace}Tags;\n";
print F "}\n";
}
- if (keys %attrs) {
+ if (keys %allAttrs) {
print F "\n// Attributes\n";
- for my $name (sort keys %attrs) {
+ for my $name (sort keys %allAttrs) {
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";
- for my $name (sort keys %attrs) {
+ for my $name (sort keys %allAttrs) {
print F " (WebCore::QualifiedName*)&${name}Attr,\n";
}
print F " };\n";
- print F " *size = ", scalar(keys %attrs), ";\n";
+ print F " *size = ", scalar(keys %allAttrs), ";\n";
print F " return $parameters{namespace}Attr;\n";
print F "}\n";
}
@@ -560,13 +576,13 @@ print F "\nvoid init()
print(F " // Namespace\n");
print(F " new ((void*)&${lowerNamespace}NamespaceURI) AtomicString(${lowerNamespace}NS);\n\n");
- if (keys %tags) {
+ if (keys %allTags) {
my $tagsNamespace = $parameters{tagsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
- printDefinitions($F, \%tags, "tags", $tagsNamespace);
+ printDefinitions($F, \%allTags, "tags", $tagsNamespace);
}
- if (keys %attrs) {
+ if (keys %allAttrs) {
my $attrsNamespace = $parameters{attrsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
- printDefinitions($F, \%attrs, "attributes", $attrsNamespace);
+ printDefinitions($F, \%allAttrs, "attributes", $attrsNamespace);
}
print F "}\n\n} }\n\n";
@@ -579,8 +595,8 @@ sub printJSElementIncludes
my $wrapperFactoryType = shift;
my %tagsSeen;
- for my $tagName (sort keys %tags) {
- my $JSInterfaceName = $tags{$tagName}{JSInterfaceName};
+ for my $tagName (sort keys %enabledTags) {
+ my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName};
next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($tagName);
$tagsSeen{$JSInterfaceName} = 1;
@@ -593,8 +609,8 @@ sub printElementIncludes
my $F = shift;
my %tagsSeen;
- for my $tagName (sort keys %tags) {
- my $interfaceName = $tags{$tagName}{interfaceName};
+ for my $tagName (sort keys %enabledTags) {
+ my $interfaceName = $enabledTags{$tagName}{interfaceName};
next if defined($tagsSeen{$interfaceName});
$tagsSeen{$interfaceName} = 1;
@@ -632,11 +648,12 @@ printLicenseHeader($F);
print F <<END
#include "config.h"
#include "$parameters{namespace}ElementFactory.h"
-
#include "$parameters{namespace}Names.h"
END
;
+print F "\n#if $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
+
printElementIncludes($F);
print F <<END
@@ -669,8 +686,6 @@ my %tagConstructorMap = buildConstructorMap();
printConstructors($F, \%tagConstructorMap);
-print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWith};
-
print F <<END
static void addTag(const QualifiedName& tag, ConstructorFunction func)
{
@@ -691,14 +706,11 @@ END
printFunctionInits($F, \%tagConstructorMap);
print F "}\n";
-print F "#endif\n" if $parameters{guardFactoryWith};
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 <<END
if (!document)
return 0;
@@ -733,17 +745,6 @@ if ($parameters{namespace} eq "HTML") {
print F " return $parameters{namespace}Element::create(qName, document);\n";
-if ($parameters{guardFactoryWith}) {
-
-print F <<END
-#else
- return 0;
-#endif
-END
-;
-
-}
-
print F <<END
}
@@ -752,6 +753,8 @@ print F <<END
END
;
+ print F "#endif\n" if $parameters{guardFactoryWith};
+
close F;
}
@@ -794,7 +797,7 @@ 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 ", bool /*createdByParser*/ = true);\n";
+print F ", bool createdByParser = true);\n";
printf F<<END
};
@@ -815,7 +818,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 $enabledTags{$name}{JSInterfaceName} eq $parameters{namespace} . "Element" || $enabledTags{$name}{JSInterfaceName} eq "HTMLNoScriptElement";
}
sub printWrapperFunctions
@@ -824,13 +827,13 @@ sub printWrapperFunctions
my $wrapperFactoryType = shift;
my %tagsSeen;
- for my $tagName (sort keys %tags) {
+ for my $tagName (sort keys %enabledTags) {
# Avoid defining the same wrapper method twice.
- my $JSInterfaceName = $tags{$tagName}{JSInterfaceName};
+ my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName};
next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($tagName);
$tagsSeen{$JSInterfaceName} = 1;
- my $conditional = $tags{$tagName}{conditional};
+ my $conditional = $enabledTags{$tagName}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n\n";
@@ -839,7 +842,7 @@ sub printWrapperFunctions
if ($wrapperFactoryType eq "JS") {
# 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 ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
print F <<END
static JSNode* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element)
{
@@ -862,7 +865,7 @@ END
;
}
} elsif ($wrapperFactoryType eq "V8") {
- if ($tags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
print F <<END
static v8::Handle<v8::Value> create${JSInterfaceName}Wrapper($parameters{namespace}Element* element)
{
@@ -903,12 +906,11 @@ sub printWrapperFactoryCppFile
printLicenseHeader($F);
- print F "#include \"config.h\"\n\n";
-
- print F "#if $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
-
+ print F "#include \"config.h\"\n";
print F "#include \"$wrapperFactoryType$parameters{namespace}ElementWrapperFactory.h\"\n";
+ print F "\n#if $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
+
printJSElementIncludes($F, $wrapperFactoryType);
print F "\n#include \"$parameters{namespace}Names.h\"\n\n";
@@ -984,17 +986,17 @@ END
;
}
- for my $tag (sort keys %tags) {
+ for my $tag (sort keys %enabledTags) {
# 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);
+ next if usesDefaultJSWrapper($tag, \%enabledTags);
- my $conditional = $tags{$tag}{conditional};
+ my $conditional = $enabledTags{$tag}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
}
- my $ucTag = $tags{$tag}{JSInterfaceName};
+ my $ucTag = $enabledTags{$tag}{JSInterfaceName};
print F " map.set(${tag}Tag.localName().impl(), create${ucTag}Wrapper);\n";
if ($conditional) {
diff --git a/WebCore/editing/EditingBehavior.h b/WebCore/editing/EditingBehavior.h
index fe09e1b..d442ad6 100644
--- a/WebCore/editing/EditingBehavior.h
+++ b/WebCore/editing/EditingBehavior.h
@@ -49,6 +49,10 @@ public:
// content should be scrolled such that the selection gets certer aligned.
bool shouldCenterAlignWhenSelectionIsRevealed() const { return m_type == EditingMacBehavior; }
+ // On Mac, style is considered present when present at the beginning of selection. On other platforms,
+ // style has to be present throughout the selection.
+ bool shouldToggleStyleBasedOnStartOfSelection() const { return m_type == EditingMacBehavior; }
+
private:
EditingBehaviorType m_type;
};
diff --git a/WebCore/editing/EditorCommand.cpp b/WebCore/editing/EditorCommand.cpp
index 0fc0068..1a77642 100644
--- a/WebCore/editing/EditorCommand.cpp
+++ b/WebCore/editing/EditorCommand.cpp
@@ -165,9 +165,10 @@ static bool executeToggleStyle(Frame* frame, EditorCommandSource source, EditAct
// Style is considered present when
// mac: present at the beginning of selection
// other: present throughout the selection
- Settings* settings = frame->document()->settings();
+
+ // FIXME: Make stateStyle() to use this editing method too for the cases where it's used for queryCommandState.
bool styleIsPresent;
- if (settings && settings->editingBehaviorType() == EditingMacBehavior)
+ if (frame->editor()->behavior().shouldToggleStyleBasedOnStartOfSelection())
styleIsPresent = frame->editor()->selectionStartHasStyle(style.get());
else
styleIsPresent = frame->editor()->selectionHasStyle(style.get()) == TrueTriState;
diff --git a/WebCore/editing/IndentOutdentCommand.cpp b/WebCore/editing/IndentOutdentCommand.cpp
index 4158521..f041aa7 100644
--- a/WebCore/editing/IndentOutdentCommand.cpp
+++ b/WebCore/editing/IndentOutdentCommand.cpp
@@ -34,6 +34,7 @@
#include "InsertListCommand.h"
#include "Range.h"
#include "SplitElementCommand.h"
+#include "Text.h"
#include "TextIterator.h"
#include "htmlediting.h"
#include "visible_units.h"
@@ -62,6 +63,22 @@ static bool isListOrIndentBlockquote(const Node* node)
return node && (node->hasTagName(ulTag) || node->hasTagName(olTag) || node->hasTagName(blockquoteTag));
}
+// This function can return -1 if we are unable to count the paragraphs between |start| and |end|.
+static int countParagraphs(const VisiblePosition& endOfFirstParagraph, const VisiblePosition& endOfLastParagraph)
+{
+ int count = 0;
+ VisiblePosition cur = endOfFirstParagraph;
+ while (cur != endOfLastParagraph) {
+ ++count;
+ cur = endOfParagraph(cur.next());
+ // If start is before a table and end is inside a table, we will never hit end because the
+ // whole table is considered a single paragraph.
+ if (cur.isNull())
+ return -1;
+ }
+ return count;
+}
+
IndentOutdentCommand::IndentOutdentCommand(Document* document, EIndentType typeOfAction, int marginInPixels)
: CompositeEditCommand(document), m_typeOfAction(typeOfAction), m_marginInPixels(marginInPixels)
{
@@ -147,6 +164,24 @@ void IndentOutdentCommand::indentRegion(const VisiblePosition& startOfSelection,
RefPtr<Element> blockquoteForNextIndent;
VisiblePosition endOfCurrentParagraph = endOfParagraph(startOfSelection);
VisiblePosition endAfterSelection = endOfParagraph(endOfParagraph(endOfSelection).next());
+ int endOfCurrentParagraphIndex = indexForVisiblePosition(endOfCurrentParagraph);
+ int endAfterSelectionIndex = indexForVisiblePosition(endAfterSelection);
+
+ // When indenting within a <pre> tag, we need to split each paragraph into a separate node for moveParagraphWithClones to work.
+ // However, splitting text nodes can cause endOfCurrentParagraph and endAfterSelection to point to an invalid position if we
+ // changed the text node it was pointing at. So we have to reset these positions.
+ int numParagraphs = countParagraphs(endOfCurrentParagraph, endAfterSelection);
+ if (splitTextNodes(startOfParagraph(startOfSelection), numParagraphs + 1)) {
+ RefPtr<Range> endOfCurrentParagraphRange = TextIterator::rangeFromLocationAndLength(document()->documentElement(), endOfCurrentParagraphIndex, 0, true);
+ RefPtr<Range> endAfterSelectionRange = TextIterator::rangeFromLocationAndLength(document()->documentElement(), endAfterSelectionIndex, 0, true);
+ if (!endOfCurrentParagraphRange.get() || !endAfterSelectionRange.get()) {
+ ASSERT_NOT_REACHED();
+ return;
+ }
+ endOfCurrentParagraph = VisiblePosition(endOfCurrentParagraphRange->startPosition(), DOWNSTREAM);
+ endAfterSelection = VisiblePosition(endAfterSelectionRange->startPosition(), DOWNSTREAM);
+ }
+
while (endOfCurrentParagraph != endAfterSelection) {
// Iterate across the selected paragraphs...
VisiblePosition endOfNextParagraph = endOfParagraph(endOfCurrentParagraph.next());
@@ -170,6 +205,29 @@ void IndentOutdentCommand::indentRegion(const VisiblePosition& startOfSelection,
}
}
+// Returns true if at least one text node was split.
+bool IndentOutdentCommand::splitTextNodes(const VisiblePosition& start, int numParagraphs)
+{
+ VisiblePosition currentParagraphStart = start;
+ bool hasSplit = false;
+ int paragraphCount;
+ for (paragraphCount = 0; paragraphCount < numParagraphs; ++paragraphCount) {
+ // If there are multiple paragraphs in a single text node, we split the text node into a separate node for each paragraph.
+ if (currentParagraphStart.deepEquivalent().node()->isTextNode() && currentParagraphStart.deepEquivalent().node() == startOfParagraph(currentParagraphStart.previous()).deepEquivalent().node()) {
+ Text* textNode = static_cast<Text *>(currentParagraphStart.deepEquivalent().node());
+ int offset = currentParagraphStart.deepEquivalent().offsetInContainerNode();
+ splitTextNode(textNode, offset);
+ currentParagraphStart = VisiblePosition(textNode, 0, VP_DEFAULT_AFFINITY);
+ hasSplit = true;
+ }
+ VisiblePosition nextParagraph = startOfParagraph(endOfParagraph(currentParagraphStart).next());
+ if (nextParagraph.isNull())
+ break;
+ currentParagraphStart = nextParagraph;
+ }
+ return hasSplit;
+}
+
void IndentOutdentCommand::outdentParagraph()
{
VisiblePosition visibleStartOfParagraph = startOfParagraph(endingSelection().visibleStart());
diff --git a/WebCore/editing/IndentOutdentCommand.h b/WebCore/editing/IndentOutdentCommand.h
index 8705bf1..8644cc5 100644
--- a/WebCore/editing/IndentOutdentCommand.h
+++ b/WebCore/editing/IndentOutdentCommand.h
@@ -51,6 +51,7 @@ private:
void outdentParagraph();
bool tryIndentingAsListItem(const VisiblePosition&);
void indentIntoBlockquote(const VisiblePosition&, const VisiblePosition&, RefPtr<Element>&);
+ bool splitTextNodes(const VisiblePosition& start, int numParagraphs);
EIndentType m_typeOfAction;
int m_marginInPixels;
diff --git a/WebCore/editing/InsertLineBreakCommand.cpp b/WebCore/editing/InsertLineBreakCommand.cpp
index caaae0a..d805acf 100644
--- a/WebCore/editing/InsertLineBreakCommand.cpp
+++ b/WebCore/editing/InsertLineBreakCommand.cpp
@@ -94,6 +94,11 @@ void InsertLineBreakCommand::doApply()
return;
VisiblePosition caret(selection.visibleStart());
+ // FIXME: If the node is hidden, we should still be able to insert text.
+ // For now, we return to avoid a crash. https://bugs.webkit.org/show_bug.cgi?id=40342
+ if (caret.isNull())
+ return;
+
Position pos(caret.deepEquivalent());
pos = positionAvoidingSpecialElementBoundary(pos);
diff --git a/WebCore/editing/InsertParagraphSeparatorCommand.cpp b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
index f5825b7..d8aa98f 100644
--- a/WebCore/editing/InsertParagraphSeparatorCommand.cpp
+++ b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
@@ -172,8 +172,9 @@ void InsertParagraphSeparatorCommand::doApply()
|| !startBlock->parentNode()
|| isTableCell(startBlock)
|| startBlock->hasTagName(formTag)
- || (canonicalPos.node()->renderer() && canonicalPos.node()->renderer()->isTable())
- || canonicalPos.node()->hasTagName(hrTag)) {
+ // FIXME: If the node is hidden, we don't have a canonical position so we will do the wrong thing for tables and <hr>. https://bugs.webkit.org/show_bug.cgi?id=40342
+ || (!canonicalPos.isNull() && canonicalPos.node()->renderer() && canonicalPos.node()->renderer()->isTable())
+ || (!canonicalPos.isNull() && canonicalPos.node()->hasTagName(hrTag))) {
applyCommandToComposite(InsertLineBreakCommand::create(document()));
return;
}
diff --git a/WebCore/editing/SelectionController.cpp b/WebCore/editing/SelectionController.cpp
index b17ab10..9ca375b 100644
--- a/WebCore/editing/SelectionController.cpp
+++ b/WebCore/editing/SelectionController.cpp
@@ -38,6 +38,7 @@
#include "FrameTree.h"
#include "FrameView.h"
#include "GraphicsContext.h"
+#include "HTMLFrameOwnerElement.h"
#include "HTMLInputElement.h"
#include "HTMLNames.h"
#include "HitTestRequest.h"
@@ -106,11 +107,11 @@ void SelectionController::moveTo(const Position &base, const Position &extent, E
setSelection(VisibleSelection(base, extent, affinity), true, true, userTriggered);
}
-void SelectionController::setSelection(const VisibleSelection& s, bool closeTyping, bool clearTypingStyle, bool userTriggered, CursorAlignOnScroll align, TextGranularity granularity)
+void SelectionController::setSelection(const VisibleSelection& s, bool closeTyping, bool clearTypingStyle, bool userTriggered, CursorAlignOnScroll align, TextGranularity granularity, DirectionalityPolicy directionalityPolicy)
{
m_granularity = granularity;
- setIsDirectional(false);
+ setIsDirectional(directionalityPolicy == MakeDirectionalSelection);
if (m_isDragCaretController) {
invalidateCaretRect();
@@ -1432,6 +1433,9 @@ void SelectionController::updateAppearance()
}
#endif
+ // We need to update style in case the node containing the selection is made display:none.
+ m_frame->document()->updateStyleIfNeeded();
+
RenderView* view = m_frame->contentRenderer();
if (!view)
return;
diff --git a/WebCore/editing/SelectionController.h b/WebCore/editing/SelectionController.h
index e4c2964..5d2ee9f 100644
--- a/WebCore/editing/SelectionController.h
+++ b/WebCore/editing/SelectionController.h
@@ -41,6 +41,8 @@ class RenderView;
class Settings;
class VisiblePosition;
+enum DirectionalityPolicy { MakeNonDirectionalSelection, MakeDirectionalSelection };
+
class SelectionController : public Noncopyable {
public:
enum EAlteration { AlterationMove, AlterationExtend };
@@ -62,8 +64,8 @@ public:
void moveTo(const Position&, const Position&, EAffinity, bool userTriggered = false);
const VisibleSelection& selection() const { return m_selection; }
- void setSelection(const VisibleSelection&, bool closeTyping = true, bool clearTypingStyle = true, bool userTriggered = false, CursorAlignOnScroll = AlignCursorOnScrollIfNeeded, TextGranularity = CharacterGranularity);
- void setSelection(const VisibleSelection& selection, TextGranularity granularity) { setSelection(selection, true, true, false, AlignCursorOnScrollIfNeeded, granularity); }
+ void setSelection(const VisibleSelection&, bool closeTyping = true, bool clearTypingStyle = true, bool userTriggered = false, CursorAlignOnScroll = AlignCursorOnScrollIfNeeded, TextGranularity = CharacterGranularity, DirectionalityPolicy = MakeDirectionalSelection);
+ void setSelection(const VisibleSelection& selection, TextGranularity granularity, DirectionalityPolicy directionality = MakeDirectionalSelection) { setSelection(selection, true, true, false, AlignCursorOnScrollIfNeeded, granularity, directionality); }
bool setSelectedRange(Range*, EAffinity, bool closeTyping);
void selectAll();
void clear();
diff --git a/WebCore/history/BackForwardController.cpp b/WebCore/history/BackForwardController.cpp
new file mode 100644
index 0000000..9f557ac
--- /dev/null
+++ b/WebCore/history/BackForwardController.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "BackForwardController.h"
+
+#include "BackForwardControllerClient.h"
+#include "BackForwardList.h"
+#include "BackForwardListImpl.h"
+
+namespace WebCore {
+
+BackForwardController::BackForwardController(Page* page, BackForwardControllerClient* client)
+ : m_page(page)
+ , m_client(client)
+{
+ if (!m_client)
+ m_list = BackForwardListImpl::create(page);
+ else
+ m_list = m_client->createBackForwardList(page);
+}
+
+BackForwardController::~BackForwardController()
+{
+ if (m_client)
+ m_client->backForwardControllerDestroyed();
+}
+
+} // namespace WebCore
diff --git a/WebCore/history/BackForwardController.h b/WebCore/history/BackForwardController.h
new file mode 100644
index 0000000..02c13a1
--- /dev/null
+++ b/WebCore/history/BackForwardController.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BackForwardController_h
+#define BackForwardController_h
+
+#include "BackForwardList.h"
+#include <wtf/Noncopyable.h>
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+
+class Page;
+class BackForwardControllerClient;
+
+class BackForwardController : public Noncopyable {
+public:
+ BackForwardController(Page*, BackForwardControllerClient*);
+ ~BackForwardController();
+
+ BackForwardControllerClient* client() const { return m_client; }
+ BackForwardList* list() const { return m_list.get(); }
+
+private:
+ Page* m_page;
+ BackForwardControllerClient* m_client;
+ RefPtr<BackForwardList> m_list;
+};
+
+} // namespace WebCore
+
+#endif // BackForwardController_h
diff --git a/WebCore/history/BackForwardControllerClient.h b/WebCore/history/BackForwardControllerClient.h
new file mode 100644
index 0000000..289ad12
--- /dev/null
+++ b/WebCore/history/BackForwardControllerClient.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BackForwardControllerClient_h
+#define BackForwardControllerClient_h
+
+#include "BackForwardList.h"
+#include <wtf/PassRefPtr.h>
+
+namespace WebCore {
+
+class Page;
+
+class BackForwardControllerClient {
+public:
+ virtual void backForwardControllerDestroyed() = 0;
+
+ virtual PassRefPtr<BackForwardList> createBackForwardList(Page*) = 0;
+
+protected:
+ virtual ~BackForwardControllerClient() { }
+};
+
+} // namespace WebCore
+
+#endif // BackForwardControllerClient_h
diff --git a/WebCore/history/BackForwardList.h b/WebCore/history/BackForwardList.h
index eb4921a..0813054 100644
--- a/WebCore/history/BackForwardList.h
+++ b/WebCore/history/BackForwardList.h
@@ -30,19 +30,13 @@
#include <wtf/RefCounted.h>
#include <wtf/PassRefPtr.h>
-#include <wtf/HashSet.h>
#include <wtf/Vector.h>
namespace WebCore {
-class Document;
class HistoryItem;
-class Page;
-class SerializedScriptValue;
-class String;
typedef Vector<RefPtr<HistoryItem> > HistoryItemVector;
-typedef HashSet<RefPtr<HistoryItem> > HistoryItemHashSet;
#if PLATFORM(CHROMIUM)
// In the Chromium port, the back/forward list is managed externally.
@@ -62,65 +56,56 @@ public:
class BackForwardList : public RefCounted<BackForwardList> {
public:
- static PassRefPtr<BackForwardList> create(Page* page) { return adoptRef(new BackForwardList(page)); }
- ~BackForwardList();
+ virtual ~BackForwardList()
+ {
+ }
+
+ virtual bool isBackForwardListImpl() const { return false; }
#if PLATFORM(CHROMIUM)
// Must be called before any other methods.
- void setClient(BackForwardListClient* client) { m_client = client; }
+ virtual void setClient(BackForwardListClient*) = 0;
#endif
-
- Page* page() { return m_page; }
-
- void addItem(PassRefPtr<HistoryItem>);
- void goBack();
- void goForward();
- void goToItem(HistoryItem*);
+
+ virtual void addItem(PassRefPtr<HistoryItem>) = 0;
+ virtual void goBack() = 0;
+ virtual void goForward() = 0;
+ virtual void goToItem(HistoryItem*) = 0;
- HistoryItem* backItem();
- HistoryItem* currentItem();
- HistoryItem* forwardItem();
- HistoryItem* itemAtIndex(int);
-
- void backListWithLimit(int, HistoryItemVector&);
- void forwardListWithLimit(int, HistoryItemVector&);
-
- int capacity();
- void setCapacity(int);
- bool enabled();
- void setEnabled(bool);
- int backListCount();
- int forwardListCount();
- bool containsItem(HistoryItem*);
-
- void close();
- bool closed();
+ virtual HistoryItem* backItem() = 0;
+ virtual HistoryItem* currentItem() = 0;
+ virtual HistoryItem* forwardItem() = 0;
+ virtual HistoryItem* itemAtIndex(int) = 0;
+
+ virtual void backListWithLimit(int, HistoryItemVector&) = 0;
+ virtual void forwardListWithLimit(int, HistoryItemVector&) = 0;
+
+ virtual int capacity() = 0;
+ virtual void setCapacity(int) = 0;
+ virtual bool enabled() = 0;
+ virtual void setEnabled(bool) = 0;
+ virtual int backListCount() = 0;
+ virtual int forwardListCount() = 0;
+ virtual bool containsItem(HistoryItem*) = 0;
+
+ virtual void close() = 0;
+ virtual bool closed() = 0;
- void removeItem(HistoryItem*);
- HistoryItemVector& entries();
+ virtual void removeItem(HistoryItem*) = 0;
+ virtual HistoryItemVector& entries() = 0;
- void pushStateItem(PassRefPtr<HistoryItem>);
+ virtual void pushStateItem(PassRefPtr<HistoryItem>) = 0;
#if ENABLE(WML)
- void clearWMLPageHistory();
+ virtual void clearWMLPageHistory() = 0;
#endif
-private:
- BackForwardList(Page*);
-
- Page* m_page;
-#if PLATFORM(CHROMIUM)
- BackForwardListClient* m_client;
-#else
- HistoryItemVector m_entries;
- HistoryItemHashSet m_entryHash;
- unsigned m_current;
-#endif
- unsigned m_capacity;
- bool m_closed;
- bool m_enabled;
+protected:
+ BackForwardList()
+ {
+ }
};
-} //namespace WebCore
+} // namespace WebCore
-#endif
+#endif // BackForwardList_h
diff --git a/WebCore/history/BackForwardListChromium.cpp b/WebCore/history/BackForwardListChromium.cpp
index a780b7d..ec0f117 100644
--- a/WebCore/history/BackForwardListChromium.cpp
+++ b/WebCore/history/BackForwardListChromium.cpp
@@ -26,7 +26,7 @@
*/
#include "config.h"
-#include "BackForwardList.h"
+#include "BackForwardListImpl.h"
#include "HistoryItem.h"
#include "Logging.h"
@@ -36,7 +36,7 @@ namespace WebCore {
static const unsigned DefaultCapacity = 100;
static const unsigned NoCurrentItemIndex = UINT_MAX;
-BackForwardList::BackForwardList(Page* page)
+BackForwardListImpl::BackForwardListImpl(Page* page)
: m_page(page)
, m_client(0)
, m_capacity(DefaultCapacity)
@@ -45,12 +45,12 @@ BackForwardList::BackForwardList(Page* page)
{
}
-BackForwardList::~BackForwardList()
+BackForwardListImpl::~BackForwardListImpl()
{
ASSERT(m_closed);
}
-void BackForwardList::addItem(PassRefPtr<HistoryItem> prpItem)
+void BackForwardListImpl::addItem(PassRefPtr<HistoryItem> prpItem)
{
ASSERT(prpItem);
if (m_capacity == 0 || !m_enabled)
@@ -59,44 +59,44 @@ void BackForwardList::addItem(PassRefPtr<HistoryItem> prpItem)
m_client->addItem(prpItem);
}
-void BackForwardList::goToItem(HistoryItem* item)
+void BackForwardListImpl::goToItem(HistoryItem* item)
{
m_client->goToItem(item);
}
-HistoryItem* BackForwardList::backItem()
+HistoryItem* BackForwardListImpl::backItem()
{
ASSERT_NOT_REACHED();
return 0;
}
-HistoryItem* BackForwardList::forwardItem()
+HistoryItem* BackForwardListImpl::forwardItem()
{
ASSERT_NOT_REACHED();
return 0;
}
-HistoryItem* BackForwardList::currentItem()
+HistoryItem* BackForwardListImpl::currentItem()
{
return m_client->currentItem();
}
-int BackForwardList::capacity()
+int BackForwardListImpl::capacity()
{
return m_capacity;
}
-void BackForwardList::setCapacity(int size)
+void BackForwardListImpl::setCapacity(int size)
{
m_capacity = size;
}
-bool BackForwardList::enabled()
+bool BackForwardListImpl::enabled()
{
return m_enabled;
}
-void BackForwardList::setEnabled(bool enabled)
+void BackForwardListImpl::setEnabled(bool enabled)
{
m_enabled = enabled;
if (!enabled) {
@@ -106,22 +106,22 @@ void BackForwardList::setEnabled(bool enabled)
}
}
-int BackForwardList::backListCount()
+int BackForwardListImpl::backListCount()
{
return m_client->backListCount();
}
-int BackForwardList::forwardListCount()
+int BackForwardListImpl::forwardListCount()
{
return m_client->forwardListCount();
}
-HistoryItem* BackForwardList::itemAtIndex(int index)
+HistoryItem* BackForwardListImpl::itemAtIndex(int index)
{
return m_client->itemAtIndex(index);
}
-void BackForwardList::pushStateItem(PassRefPtr<HistoryItem> newItem)
+void BackForwardListImpl::pushStateItem(PassRefPtr<HistoryItem> newItem)
{
RefPtr<HistoryItem> current = m_client->currentItem();
@@ -131,13 +131,13 @@ void BackForwardList::pushStateItem(PassRefPtr<HistoryItem> newItem)
current->setStateObject(SerializedScriptValue::create());
}
-HistoryItemVector& BackForwardList::entries()
+HistoryItemVector& BackForwardListImpl::entries()
{
static HistoryItemVector noEntries;
return noEntries;
}
-void BackForwardList::close()
+void BackForwardListImpl::close()
{
if (m_client)
m_client->close();
@@ -145,9 +145,40 @@ void BackForwardList::close()
m_closed = true;
}
-bool BackForwardList::closed()
+bool BackForwardListImpl::closed()
{
return m_closed;
}
+void BackForwardListImpl::goBack()
+{
+ ASSERT_NOT_REACHED();
+}
+
+void BackForwardListImpl::goForward()
+{
+ ASSERT_NOT_REACHED();
+}
+
+void BackForwardListImpl::backListWithLimit(int, HistoryItemVector&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+void BackForwardListImpl::forwardListWithLimit(int, HistoryItemVector&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+bool BackForwardListImpl::containsItem(HistoryItem*)
+{
+ ASSERT_NOT_REACHED();
+ return false;
+}
+
+void BackForwardListImpl::removeItem(HistoryItem*)
+{
+ ASSERT_NOT_REACHED();
+}
+
} // namespace WebCore
diff --git a/WebCore/history/BackForwardList.cpp b/WebCore/history/BackForwardListImpl.cpp
index 656cce2..9da3cad 100644
--- a/WebCore/history/BackForwardList.cpp
+++ b/WebCore/history/BackForwardListImpl.cpp
@@ -25,7 +25,7 @@
*/
#include "config.h"
-#include "BackForwardList.h"
+#include "BackForwardListImpl.h"
#include "Frame.h"
#include "FrameLoader.h"
@@ -43,7 +43,7 @@ namespace WebCore {
static const unsigned DefaultCapacity = 100;
static const unsigned NoCurrentItemIndex = UINT_MAX;
-BackForwardList::BackForwardList(Page* page)
+BackForwardListImpl::BackForwardListImpl(Page* page)
: m_page(page)
, m_current(NoCurrentItemIndex)
, m_capacity(DefaultCapacity)
@@ -52,12 +52,12 @@ BackForwardList::BackForwardList(Page* page)
{
}
-BackForwardList::~BackForwardList()
+BackForwardListImpl::~BackForwardListImpl()
{
ASSERT(m_closed);
}
-void BackForwardList::addItem(PassRefPtr<HistoryItem> prpItem)
+void BackForwardListImpl::addItem(PassRefPtr<HistoryItem> prpItem)
{
ASSERT(prpItem);
if (m_capacity == 0 || !m_enabled)
@@ -93,7 +93,7 @@ void BackForwardList::addItem(PassRefPtr<HistoryItem> prpItem)
m_page->mainFrame()->loader()->client()->dispatchDidAddBackForwardItem(currentItem());
}
-void BackForwardList::goBack()
+void BackForwardListImpl::goBack()
{
ASSERT(m_current > 0);
if (m_current > 0) {
@@ -103,7 +103,7 @@ void BackForwardList::goBack()
}
}
-void BackForwardList::goForward()
+void BackForwardListImpl::goForward()
{
ASSERT(m_current < m_entries.size() - 1);
if (m_current < m_entries.size() - 1) {
@@ -113,7 +113,7 @@ void BackForwardList::goForward()
}
}
-void BackForwardList::goToItem(HistoryItem* item)
+void BackForwardListImpl::goToItem(HistoryItem* item)
{
if (!m_entries.size() || !item)
return;
@@ -129,28 +129,28 @@ void BackForwardList::goToItem(HistoryItem* item)
}
}
-HistoryItem* BackForwardList::backItem()
+HistoryItem* BackForwardListImpl::backItem()
{
if (m_current && m_current != NoCurrentItemIndex)
return m_entries[m_current - 1].get();
return 0;
}
-HistoryItem* BackForwardList::currentItem()
+HistoryItem* BackForwardListImpl::currentItem()
{
if (m_current != NoCurrentItemIndex)
return m_entries[m_current].get();
return 0;
}
-HistoryItem* BackForwardList::forwardItem()
+HistoryItem* BackForwardListImpl::forwardItem()
{
if (m_entries.size() && m_current < m_entries.size() - 1)
return m_entries[m_current + 1].get();
return 0;
}
-void BackForwardList::backListWithLimit(int limit, HistoryItemVector& list)
+void BackForwardListImpl::backListWithLimit(int limit, HistoryItemVector& list)
{
list.clear();
if (m_current != NoCurrentItemIndex) {
@@ -160,7 +160,7 @@ void BackForwardList::backListWithLimit(int limit, HistoryItemVector& list)
}
}
-void BackForwardList::forwardListWithLimit(int limit, HistoryItemVector& list)
+void BackForwardListImpl::forwardListWithLimit(int limit, HistoryItemVector& list)
{
ASSERT(limit > -1);
list.clear();
@@ -176,12 +176,12 @@ void BackForwardList::forwardListWithLimit(int limit, HistoryItemVector& list)
}
}
-int BackForwardList::capacity()
+int BackForwardListImpl::capacity()
{
return m_capacity;
}
-void BackForwardList::setCapacity(int size)
+void BackForwardListImpl::setCapacity(int size)
{
while (size < (int)m_entries.size()) {
RefPtr<HistoryItem> item = m_entries.last();
@@ -200,12 +200,12 @@ void BackForwardList::setCapacity(int size)
m_capacity = size;
}
-bool BackForwardList::enabled()
+bool BackForwardListImpl::enabled()
{
return m_enabled;
}
-void BackForwardList::setEnabled(bool enabled)
+void BackForwardListImpl::setEnabled(bool enabled)
{
m_enabled = enabled;
if (!enabled) {
@@ -215,17 +215,17 @@ void BackForwardList::setEnabled(bool enabled)
}
}
-int BackForwardList::backListCount()
+int BackForwardListImpl::backListCount()
{
return m_current == NoCurrentItemIndex ? 0 : m_current;
}
-int BackForwardList::forwardListCount()
+int BackForwardListImpl::forwardListCount()
{
return m_current == NoCurrentItemIndex ? 0 : (int)m_entries.size() - (m_current + 1);
}
-HistoryItem* BackForwardList::itemAtIndex(int index)
+HistoryItem* BackForwardListImpl::itemAtIndex(int index)
{
// Do range checks without doing math on index to avoid overflow.
if (index < -(int)m_current)
@@ -237,12 +237,12 @@ HistoryItem* BackForwardList::itemAtIndex(int index)
return m_entries[index + m_current].get();
}
-HistoryItemVector& BackForwardList::entries()
+HistoryItemVector& BackForwardListImpl::entries()
{
return m_entries;
}
-void BackForwardList::pushStateItem(PassRefPtr<HistoryItem> newItem)
+void BackForwardListImpl::pushStateItem(PassRefPtr<HistoryItem> newItem)
{
ASSERT(newItem);
ASSERT(newItem->stateObject());
@@ -256,7 +256,7 @@ void BackForwardList::pushStateItem(PassRefPtr<HistoryItem> newItem)
current->setStateObject(SerializedScriptValue::create());
}
-void BackForwardList::close()
+void BackForwardListImpl::close()
{
int size = m_entries.size();
for (int i = 0; i < size; ++i)
@@ -267,12 +267,12 @@ void BackForwardList::close()
m_closed = true;
}
-bool BackForwardList::closed()
+bool BackForwardListImpl::closed()
{
return m_closed;
}
-void BackForwardList::removeItem(HistoryItem* item)
+void BackForwardListImpl::removeItem(HistoryItem* item)
{
if (!item)
return;
@@ -294,13 +294,13 @@ void BackForwardList::removeItem(HistoryItem* item)
}
}
-bool BackForwardList::containsItem(HistoryItem* entry)
+bool BackForwardListImpl::containsItem(HistoryItem* entry)
{
return m_entryHash.contains(entry);
}
#if ENABLE(WML)
-void BackForwardList::clearWMLPageHistory()
+void BackForwardListImpl::clearWMLPageHistory()
{
RefPtr<HistoryItem> currentItem = this->currentItem();
diff --git a/WebCore/history/BackForwardListImpl.h b/WebCore/history/BackForwardListImpl.h
new file mode 100644
index 0000000..86e1227
--- /dev/null
+++ b/WebCore/history/BackForwardListImpl.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
+ * 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:
+ * 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 BackForwardListImpl_h
+#define BackForwardListImpl_h
+
+#include "BackForwardList.h"
+#include <wtf/HashSet.h>
+
+namespace WebCore {
+
+class HistoryItem;
+class Page;
+
+typedef Vector<RefPtr<HistoryItem> > HistoryItemVector;
+typedef HashSet<RefPtr<HistoryItem> > HistoryItemHashSet;
+
+class BackForwardListImpl : public BackForwardList {
+public:
+ static PassRefPtr<BackForwardListImpl> create(Page* page) { return adoptRef(new BackForwardListImpl(page)); }
+ ~BackForwardListImpl();
+
+ bool isBackForwardListImpl() const { return true; }
+
+#if PLATFORM(CHROMIUM)
+ // Must be called before any other methods.
+ void setClient(BackForwardListClient* client) { m_client = client; }
+#endif
+
+ Page* page() { return m_page; }
+
+ void addItem(PassRefPtr<HistoryItem>);
+ void goBack();
+ void goForward();
+ void goToItem(HistoryItem*);
+
+ HistoryItem* backItem();
+ HistoryItem* currentItem();
+ HistoryItem* forwardItem();
+ HistoryItem* itemAtIndex(int);
+
+ void backListWithLimit(int, HistoryItemVector&);
+ void forwardListWithLimit(int, HistoryItemVector&);
+
+ int capacity();
+ void setCapacity(int);
+ bool enabled();
+ void setEnabled(bool);
+ int backListCount();
+ int forwardListCount();
+ bool containsItem(HistoryItem*);
+
+ void close();
+ bool closed();
+
+ void removeItem(HistoryItem*);
+ HistoryItemVector& entries();
+
+ void pushStateItem(PassRefPtr<HistoryItem>);
+
+#if ENABLE(WML)
+ void clearWMLPageHistory();
+#endif
+
+private:
+ BackForwardListImpl(Page*);
+
+ Page* m_page;
+#if PLATFORM(CHROMIUM)
+ BackForwardListClient* m_client;
+#else
+ HistoryItemVector m_entries;
+ HistoryItemHashSet m_entryHash;
+ unsigned m_current;
+#endif
+ unsigned m_capacity;
+ bool m_closed;
+ bool m_enabled;
+};
+
+} // namespace WebCore
+
+#endif // BackForwardListImpl_h
diff --git a/WebCore/history/CachedFrame.cpp b/WebCore/history/CachedFrame.cpp
index 0be6710..1f4895f 100644
--- a/WebCore/history/CachedFrame.cpp
+++ b/WebCore/history/CachedFrame.cpp
@@ -124,7 +124,7 @@ CachedFrame::CachedFrame(Frame* frame)
// Active DOM objects must be suspended before we cached the frame script data
m_document->suspendActiveDOMObjects();
- m_cachedFrameScriptData.set(new ScriptCachedFrameData(frame));
+ m_cachedFrameScriptData = adoptPtr(new ScriptCachedFrameData(frame));
// Custom scrollbar renderers will get reattached when the document comes out of the page cache
m_view->detachCustomScrollbars();
@@ -232,9 +232,9 @@ void CachedFrame::destroy()
clear();
}
-void CachedFrame::setCachedFramePlatformData(CachedFramePlatformData* data)
+void CachedFrame::setCachedFramePlatformData(PassOwnPtr<CachedFramePlatformData> data)
{
- m_cachedFramePlatformData.set(data);
+ m_cachedFramePlatformData = data;
}
CachedFramePlatformData* CachedFrame::cachedFramePlatformData()
diff --git a/WebCore/history/CachedFrame.h b/WebCore/history/CachedFrame.h
index ca772a4..884a601 100644
--- a/WebCore/history/CachedFrame.h
+++ b/WebCore/history/CachedFrame.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,6 +28,7 @@
#include "KURL.h"
#include "ScriptCachedFrameData.h"
+#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
namespace WebCore {
@@ -75,7 +76,7 @@ public:
void clear();
void destroy();
- void setCachedFramePlatformData(CachedFramePlatformData* data);
+ void setCachedFramePlatformData(PassOwnPtr<CachedFramePlatformData>);
CachedFramePlatformData* cachedFramePlatformData();
using CachedFrameBase::document;
diff --git a/WebCore/html/FileReader.cpp b/WebCore/html/FileReader.cpp
index 2e020c1..b44ec9d 100644
--- a/WebCore/html/FileReader.cpp
+++ b/WebCore/html/FileReader.cpp
@@ -85,6 +85,9 @@ void FileReader::stop()
void FileReader::readAsBinaryString(Blob* fileBlob)
{
+ if (!fileBlob)
+ return;
+
// FIXME: needs to handle non-file blobs.
LOG(FileAPI, "FileReader: reading as binary: %s\n", fileBlob->path().utf8().data());
@@ -93,6 +96,9 @@ void FileReader::readAsBinaryString(Blob* fileBlob)
void FileReader::readAsText(Blob* fileBlob, const String& encoding)
{
+ if (!fileBlob)
+ return;
+
// FIXME: needs to handle non-file blobs.
LOG(FileAPI, "FileReader: reading as text: %s\n", fileBlob->path().utf8().data());
@@ -103,6 +109,9 @@ void FileReader::readAsText(Blob* fileBlob, const String& encoding)
void FileReader::readAsDataURL(File* file)
{
+ if (!file)
+ return;
+
LOG(FileAPI, "FileReader: reading as data URL: %s\n", file->path().utf8().data());
m_fileType = file->type();
diff --git a/WebCore/html/FileStreamClient.h b/WebCore/html/FileStreamClient.h
index e1aec53..05c7df5 100644
--- a/WebCore/html/FileStreamClient.h
+++ b/WebCore/html/FileStreamClient.h
@@ -34,7 +34,6 @@
#if ENABLE(FILE_READER) || ENABLE(FILE_WRITER)
#include "ExceptionCode.h"
-#include <wtf/PassRefPtr.h>
namespace WebCore {
diff --git a/WebCore/html/FileStreamProxy.cpp b/WebCore/html/FileStreamProxy.cpp
index eb99cf3..e2516df 100644
--- a/WebCore/html/FileStreamProxy.cpp
+++ b/WebCore/html/FileStreamProxy.cpp
@@ -44,15 +44,24 @@
namespace WebCore {
-FileStreamProxy::FileStreamProxy(ScriptExecutionContext* context, FileStreamClient* client)
+inline FileStreamProxy::FileStreamProxy(ScriptExecutionContext* context, FileStreamClient* client)
: m_context(context)
, m_client(client)
, m_stream(FileStream::create(this))
{
- // Holds an extra ref so that the instance will not get deleted while there can be any tasks on the file thread.
- ref();
+}
+
+PassRefPtr<FileStreamProxy> FileStreamProxy::create(ScriptExecutionContext* context, FileStreamClient* client)
+{
+ RefPtr<FileStreamProxy> proxy = adoptRef(new FileStreamProxy(context, client));
+
+ // Hold an ref so that the instance will not get deleted while there are tasks on the file thread.
+ // This is balanced by the deref in derefProxyOnContext below.
+ proxy->ref();
+
+ proxy->fileThread()->postTask(createFileThreadTask(proxy->m_stream.get(), &FileStream::start));
- fileThread()->postTask(createFileThreadTask(m_stream.get(), &FileStream::start));
+ return proxy.release();
}
FileStreamProxy::~FileStreamProxy()
diff --git a/WebCore/html/FileStreamProxy.h b/WebCore/html/FileStreamProxy.h
index 308da15..66d8cb3 100644
--- a/WebCore/html/FileStreamProxy.h
+++ b/WebCore/html/FileStreamProxy.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -33,7 +34,6 @@
#if ENABLE(FILE_READER) || ENABLE(FILE_WRITER)
-#include "ExceptionCode.h"
#include "FileStreamClient.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
@@ -50,10 +50,7 @@ class String;
// A proxy module that calls corresponding FileStream methods on the file thread. Note: you must call stop() first and then release the reference to destruct the FileStreamProxy instance.
class FileStreamProxy : public RefCounted<FileStreamProxy>, public FileStreamClient {
public:
- static PassRefPtr<FileStreamProxy> create(ScriptExecutionContext* context, FileStreamClient* client)
- {
- return adoptRef(new FileStreamProxy(context, client));
- }
+ static PassRefPtr<FileStreamProxy> create(ScriptExecutionContext*, FileStreamClient*);
virtual ~FileStreamProxy();
void openForRead(Blob* blob);
diff --git a/WebCore/html/HTMLAnchorElement.idl b/WebCore/html/HTMLAnchorElement.idl
index 846162f..d57fcb6 100644
--- a/WebCore/html/HTMLAnchorElement.idl
+++ b/WebCore/html/HTMLAnchorElement.idl
@@ -24,7 +24,7 @@ module html {
attribute [Reflect] DOMString accessKey;
attribute [Reflect] DOMString charset;
attribute [Reflect] DOMString coords;
- attribute [ReflectURL] DOMString href;
+ attribute [Reflect,URL] DOMString href;
attribute [Reflect] DOMString hreflang;
attribute [Reflect] DOMString name;
attribute [Reflect] DOMString rel;
diff --git a/WebCore/html/HTMLAreaElement.idl b/WebCore/html/HTMLAreaElement.idl
index 0f6fd72..64c6468 100644
--- a/WebCore/html/HTMLAreaElement.idl
+++ b/WebCore/html/HTMLAreaElement.idl
@@ -24,7 +24,7 @@ module html {
attribute [Reflect] DOMString accessKey;
attribute [Reflect] DOMString alt;
attribute [Reflect] DOMString coords;
- attribute [ReflectURL] DOMString href;
+ attribute [Reflect,URL] DOMString href;
attribute [Reflect] boolean noHref;
attribute [Reflect] DOMString shape;
attribute [Reflect] DOMString target;
diff --git a/WebCore/html/HTMLCanvasElement.cpp b/WebCore/html/HTMLCanvasElement.cpp
index f8baf20..a14cbef 100644
--- a/WebCore/html/HTMLCanvasElement.cpp
+++ b/WebCore/html/HTMLCanvasElement.cpp
@@ -36,10 +36,12 @@
#include "CanvasStyle.h"
#include "Chrome.h"
#include "Document.h"
+#include "ExceptionCode.h"
#include "Frame.h"
#include "GraphicsContext.h"
#include "HTMLNames.h"
#include "ImageBuffer.h"
+#include "MIMETypeRegistry.h"
#include "Page.h"
#include "RenderHTMLCanvas.h"
#include "Settings.h"
@@ -55,11 +57,23 @@ namespace WebCore {
using namespace HTMLNames;
+// These values come from the WhatWG spec.
+static const int DefaultWidth = 300;
+static const int DefaultHeight = 150;
+
+// Firefox limits width/height to 32767 pixels, but slows down dramatically before it
+// reaches that limit. We limit by area instead, giving us larger maximum dimensions,
+// in exchange for a smaller maximum canvas size.
+static const float MaxCanvasArea = 32768 * 8192; // Maximum canvas area in CSS pixels
+
HTMLCanvasElement::HTMLCanvasElement(const QualifiedName& tagName, Document* document)
: HTMLElement(tagName, document)
- , CanvasSurface(document->frame() ? document->frame()->page()->chrome()->scaleFactor() : 1)
, m_observer(0)
+ , m_size(DefaultWidth, DefaultHeight)
, m_ignoreReset(false)
+ , m_pageScaleFactor(document->frame() ? document->frame()->page()->chrome()->scaleFactor() : 1)
+ , m_originClean(true)
+ , m_hasCreatedImageBuffer(false)
{
ASSERT(hasTagName(canvasTag));
}
@@ -186,7 +200,8 @@ CanvasRenderingContext* HTMLCanvasElement::getContext(const String& type, Canvas
void HTMLCanvasElement::willDraw(const FloatRect& rect)
{
- CanvasSurface::willDraw(rect);
+ if (m_imageBuffer)
+ m_imageBuffer->clearImage();
if (RenderBox* ro = renderBox()) {
FloatRect destRect = ro->contentBoxRect();
@@ -290,4 +305,108 @@ void HTMLCanvasElement::recalcStyle(StyleChange change)
}
}
+void HTMLCanvasElement::setSurfaceSize(const IntSize& size)
+{
+ m_size = size;
+ m_hasCreatedImageBuffer = false;
+ m_imageBuffer.clear();
+}
+
+String HTMLCanvasElement::toDataURL(const String& mimeType, const double* quality, ExceptionCode& ec)
+{
+ if (!m_originClean) {
+ ec = SECURITY_ERR;
+ return String();
+ }
+
+ if (m_size.isEmpty() || !buffer())
+ return String("data:,");
+
+ String lowercaseMimeType = mimeType.lower();
+
+ // FIXME: Make isSupportedImageMIMETypeForEncoding threadsafe (to allow this method to be used on a worker thread).
+ if (mimeType.isNull() || !MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(lowercaseMimeType))
+ return buffer()->toDataURL("image/png");
+
+ return buffer()->toDataURL(lowercaseMimeType, quality);
+}
+
+IntRect HTMLCanvasElement::convertLogicalToDevice(const FloatRect& logicalRect) const
+{
+ return IntRect(convertLogicalToDevice(logicalRect.location()), convertLogicalToDevice(logicalRect.size()));
+}
+
+IntSize HTMLCanvasElement::convertLogicalToDevice(const FloatSize& logicalSize) const
+{
+ float wf = ceilf(logicalSize.width() * m_pageScaleFactor);
+ float hf = ceilf(logicalSize.height() * m_pageScaleFactor);
+
+ if (!(wf >= 1 && hf >= 1 && wf * hf <= MaxCanvasArea))
+ return IntSize();
+
+ return IntSize(static_cast<unsigned>(wf), static_cast<unsigned>(hf));
+}
+
+IntPoint HTMLCanvasElement::convertLogicalToDevice(const FloatPoint& logicalPos) const
+{
+ float xf = logicalPos.x() * m_pageScaleFactor;
+ float yf = logicalPos.y() * m_pageScaleFactor;
+
+ return IntPoint(static_cast<unsigned>(xf), static_cast<unsigned>(yf));
+}
+
+const SecurityOrigin& HTMLCanvasElement::securityOrigin() const
+{
+ return *document()->securityOrigin();
+}
+
+CSSStyleSelector* HTMLCanvasElement::styleSelector()
+{
+ return document()->styleSelector();
+}
+
+void HTMLCanvasElement::createImageBuffer() const
+{
+ ASSERT(!m_imageBuffer);
+
+ m_hasCreatedImageBuffer = true;
+
+ FloatSize unscaledSize(width(), height());
+ IntSize size = convertLogicalToDevice(unscaledSize);
+ if (!size.width() || !size.height())
+ return;
+
+ m_imageBuffer = ImageBuffer::create(size);
+ // The convertLogicalToDevice MaxCanvasArea check should prevent common cases
+ // where ImageBuffer::create() returns 0, however we could still be low on memory.
+ if (!m_imageBuffer)
+ return;
+ m_imageBuffer->context()->scale(FloatSize(size.width() / unscaledSize.width(), size.height() / unscaledSize.height()));
+ m_imageBuffer->context()->setShadowsIgnoreTransforms(true);
+}
+
+GraphicsContext* HTMLCanvasElement::drawingContext() const
+{
+ return buffer() ? m_imageBuffer->context() : 0;
+}
+
+ImageBuffer* HTMLCanvasElement::buffer() const
+{
+ if (!m_hasCreatedImageBuffer)
+ createImageBuffer();
+ return m_imageBuffer.get();
+}
+
+AffineTransform HTMLCanvasElement::baseTransform() const
+{
+ ASSERT(m_hasCreatedImageBuffer);
+ FloatSize unscaledSize(width(), height());
+ IntSize size = convertLogicalToDevice(unscaledSize);
+ AffineTransform transform;
+ if (size.width() && size.height())
+ transform.scaleNonUniform(size.width() / unscaledSize.width(), size.height() / unscaledSize.height());
+ transform.multiply(m_imageBuffer->baseTransform());
+ return transform;
+}
+
}
diff --git a/WebCore/html/HTMLCanvasElement.h b/WebCore/html/HTMLCanvasElement.h
index 1337b87..d399d5f 100644
--- a/WebCore/html/HTMLCanvasElement.h
+++ b/WebCore/html/HTMLCanvasElement.h
@@ -28,7 +28,6 @@
#ifndef HTMLCanvasElement_h
#define HTMLCanvasElement_h
-#include "CanvasSurface.h"
#include "FloatRect.h"
#include "HTMLElement.h"
#include "IntSize.h"
@@ -43,6 +42,7 @@ class CanvasContextAttributes;
class CanvasRenderingContext;
class GraphicsContext;
class HTMLCanvasElement;
+class ImageBuffer;
class IntSize;
class CanvasObserver {
@@ -54,17 +54,23 @@ public:
virtual void canvasDestroyed(HTMLCanvasElement*) = 0;
};
-class HTMLCanvasElement : public HTMLElement, public CanvasSurface {
+class HTMLCanvasElement : public HTMLElement {
public:
static PassRefPtr<HTMLCanvasElement> create(Document*);
static PassRefPtr<HTMLCanvasElement> create(const QualifiedName&, Document*);
virtual ~HTMLCanvasElement();
+ void setObserver(CanvasObserver* observer) { m_observer = observer; }
+
+ // Attributes and functions exposed to script
+ int width() const { return size().width(); }
+ int height() const { return size().height(); }
+
+ const IntSize& size() const { return m_size; }
+
void setWidth(int);
void setHeight(int);
- CanvasRenderingContext* getContext(const String&, CanvasContextAttributes* attributes = 0);
-
void setSize(const IntSize& newSize)
{
if (newSize == size())
@@ -76,16 +82,33 @@ public:
reset();
}
- virtual void willDraw(const FloatRect&);
+ CanvasRenderingContext* getContext(const String&, CanvasContextAttributes* attributes = 0);
+
+ String toDataURL(const String& mimeType, const double* quality, ExceptionCode&);
+ String toDataURL(const String& mimeType, ExceptionCode& ec) { return toDataURL(mimeType, 0, ec); }
+
+ // Used for rendering
+ void willDraw(const FloatRect&);
void paint(GraphicsContext*, const IntRect&);
- void setObserver(CanvasObserver* observer) { m_observer = observer; }
+ GraphicsContext* drawingContext() const;
CanvasRenderingContext* renderingContext() const { return m_context.get(); }
- RenderBox* renderBox() const { return HTMLElement::renderBox(); }
- RenderStyle* computedStyle() { return HTMLElement::computedStyle(); }
+ ImageBuffer* buffer() const;
+
+ IntRect convertLogicalToDevice(const FloatRect&) const;
+ IntSize convertLogicalToDevice(const FloatSize&) const;
+ IntPoint convertLogicalToDevice(const FloatPoint&) const;
+
+ const SecurityOrigin& securityOrigin() const;
+ void setOriginTainted() { m_originClean = false; }
+ bool originClean() const { return m_originClean; }
+
+ CSSStyleSelector* styleSelector();
+
+ AffineTransform baseTransform() const;
#if ENABLE(3D_CANVAS)
bool is3D() const;
@@ -122,13 +145,28 @@ private:
void reset();
- bool m_rendererIsCanvas;
+ void createImageBuffer() const;
+
+ void setSurfaceSize(const IntSize&);
+ bool hasCreatedImageBuffer() const { return m_hasCreatedImageBuffer; }
- OwnPtr<CanvasRenderingContext> m_context;
CanvasObserver* m_observer;
+ IntSize m_size;
+
+ OwnPtr<CanvasRenderingContext> m_context;
+
+ bool m_rendererIsCanvas;
+
bool m_ignoreReset;
FloatRect m_dirtyRect;
+
+ float m_pageScaleFactor;
+ bool m_originClean;
+
+ // m_createdImageBuffer means we tried to malloc the buffer. We didn't necessarily get it.
+ mutable bool m_hasCreatedImageBuffer;
+ mutable OwnPtr<ImageBuffer> m_imageBuffer;
};
} //namespace
diff --git a/WebCore/html/HTMLConstructionSite.cpp b/WebCore/html/HTMLConstructionSite.cpp
new file mode 100644
index 0000000..5745625
--- /dev/null
+++ b/WebCore/html/HTMLConstructionSite.cpp
@@ -0,0 +1,367 @@
+/*
+ * Copyright (C) 2010 Google, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 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 GOOGLE 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 GOOGLE 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 "HTMLTreeBuilder.h"
+
+#include "Comment.h"
+#include "DocumentFragment.h"
+#include "DocumentType.h"
+#include "Element.h"
+#include "Frame.h"
+#include "HTMLDocument.h"
+#include "HTMLHtmlElement.h"
+#include "HTMLNames.h"
+#include "HTMLScriptElement.h"
+#include "HTMLToken.h"
+#include "HTMLTokenizer.h"
+#include "LegacyHTMLDocumentParser.h"
+#include "LegacyHTMLTreeBuilder.h"
+#include "LocalizedStrings.h"
+#if ENABLE(MATHML)
+#include "MathMLNames.h"
+#endif
+#include "NotImplemented.h"
+#if ENABLE(SVG)
+#include "SVGNames.h"
+#endif
+#include "ScriptController.h"
+#include "Settings.h"
+#include "Text.h"
+#include <wtf/UnusedParam.h>
+
+namespace WebCore {
+
+using namespace HTMLNames;
+
+namespace {
+
+bool hasImpliedEndTag(Element* element)
+{
+ return element->hasTagName(ddTag)
+ || element->hasTagName(dtTag)
+ || element->hasTagName(liTag)
+ || element->hasTagName(optionTag)
+ || element->hasTagName(optgroupTag)
+ || element->hasTagName(pTag)
+ || element->hasTagName(rpTag)
+ || element->hasTagName(rtTag);
+}
+
+} // namespace
+
+template<typename ChildType>
+PassRefPtr<ChildType> HTMLConstructionSite::attach(Node* parent, PassRefPtr<ChildType> prpChild)
+{
+ RefPtr<ChildType> child = prpChild;
+
+ // FIXME: It's confusing that HTMLConstructionSite::attach does the magic
+ // redirection to the foster parent but HTMLConstructionSite::attachAtSite
+ // doesn't. It feels like we're missing a concept somehow.
+ if (m_redirectAttachToFosterParent) {
+ fosterParent(child.get());
+ ASSERT(child->attached());
+ return child.release();
+ }
+
+ parent->parserAddChild(child);
+ // It's slightly unfortunate that we need to hold a reference to child
+ // here to call attach(). We should investigate whether we can rely on
+ // |parent| to hold a ref at this point. In the common case (at least
+ // for elements), however, we'll get to use this ref in the stack of
+ // open elements.
+ ASSERT(parent->attached());
+ ASSERT(!child->attached());
+ child->attach();
+ return child.release();
+}
+
+void HTMLConstructionSite::attachAtSite(const AttachmentSite& site, PassRefPtr<Node> prpChild)
+{
+ RefPtr<Node> child = prpChild;
+
+ if (site.nextChild) {
+ // FIXME: We need an insertElement which does not send mutation events.
+ ExceptionCode ec = 0;
+ site.parent->insertBefore(child, site.nextChild, ec);
+ ASSERT(!ec);
+ ASSERT(site.parent->attached());
+ if (!child->attached())
+ child->attach();
+ return;
+ }
+ site.parent->parserAddChild(child);
+ // It's slightly unfortunate that we need to hold a reference to child
+ // here to call attach(). We should investigate whether we can rely on
+ // |site.parent| to hold a ref at this point.
+ ASSERT(site.parent->attached());
+ if (!child->attached())
+ child->attach();
+}
+
+HTMLConstructionSite::HTMLConstructionSite(Document* document, FragmentScriptingPermission scriptingPermission)
+ : m_document(document)
+ , m_fragmentScriptingPermission(scriptingPermission)
+ , m_redirectAttachToFosterParent(false)
+{
+}
+
+HTMLConstructionSite::~HTMLConstructionSite()
+{
+}
+
+void HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML(AtomicHTMLToken& token)
+{
+ RefPtr<Element> element = HTMLHtmlElement::create(m_document);
+ element->setAttributeMap(token.takeAtributes(), m_fragmentScriptingPermission);
+ m_openElements.pushHTMLHtmlElement(attach(m_document, element.release()));
+}
+
+void HTMLConstructionSite::mergeAttributesFromTokenIntoElement(AtomicHTMLToken& token, Element* element)
+{
+ if (!token.attributes())
+ return;
+
+ NamedNodeMap* attributes = element->attributes(false);
+ for (unsigned i = 0; i < token.attributes()->length(); ++i) {
+ Attribute* attribute = token.attributes()->attributeItem(i);
+ if (!attributes->getAttributeItem(attribute->name()))
+ element->setAttribute(attribute->name(), attribute->value());
+ }
+}
+
+void HTMLConstructionSite::insertHTMLHtmlStartTagInBody(AtomicHTMLToken& token)
+{
+ // FIXME: parse error
+ mergeAttributesFromTokenIntoElement(token, m_openElements.htmlElement());
+}
+
+void HTMLConstructionSite::insertHTMLBodyStartTagInBody(AtomicHTMLToken& token)
+{
+ // FIXME: parse error
+ notImplemented(); // fragment case
+ mergeAttributesFromTokenIntoElement(token, m_openElements.bodyElement());
+}
+
+void HTMLConstructionSite::insertDoctype(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::DOCTYPE);
+ attach(m_document, DocumentType::create(m_document, token.name(), String::adopt(token.publicIdentifier()), String::adopt(token.systemIdentifier())));
+ // FIXME: Move quirks mode detection from DocumentType element to here.
+ notImplemented();
+ if (token.forceQuirks())
+ m_document->setParseMode(Document::Compat);
+}
+
+void HTMLConstructionSite::insertComment(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::Comment);
+ attach(currentElement(), Comment::create(m_document, token.comment()));
+}
+
+void HTMLConstructionSite::insertCommentOnDocument(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::Comment);
+ attach(m_document, Comment::create(m_document, token.comment()));
+}
+
+void HTMLConstructionSite::insertCommentOnHTMLHtmlElement(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::Comment);
+ attach(m_openElements.htmlElement(), Comment::create(m_document, token.comment()));
+}
+
+PassRefPtr<Element> HTMLConstructionSite::createHTMLElementAndAttachToCurrent(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ return attach(currentElement(), createHTMLElement(token));
+}
+
+void HTMLConstructionSite::insertHTMLHtmlElement(AtomicHTMLToken& token)
+{
+ ASSERT(!m_redirectAttachToFosterParent);
+ m_openElements.pushHTMLHtmlElement(createHTMLElementAndAttachToCurrent(token));
+}
+
+void HTMLConstructionSite::insertHTMLHeadElement(AtomicHTMLToken& token)
+{
+ ASSERT(!m_redirectAttachToFosterParent);
+ m_head = createHTMLElementAndAttachToCurrent(token);
+ m_openElements.pushHTMLHeadElement(m_head);
+}
+
+void HTMLConstructionSite::insertHTMLBodyElement(AtomicHTMLToken& token)
+{
+ ASSERT(!m_redirectAttachToFosterParent);
+ m_openElements.pushHTMLBodyElement(createHTMLElementAndAttachToCurrent(token));
+}
+
+void HTMLConstructionSite::insertHTMLElement(AtomicHTMLToken& token)
+{
+ m_openElements.push(createHTMLElementAndAttachToCurrent(token));
+}
+
+void HTMLConstructionSite::insertSelfClosingHTMLElement(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ createHTMLElementAndAttachToCurrent(token);
+ // FIXME: Do we want to acknowledge the token's self-closing flag?
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#acknowledge-self-closing-flag
+}
+
+void HTMLConstructionSite::insertFormattingElement(AtomicHTMLToken& token)
+{
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#the-stack-of-open-elements
+ // Possible active formatting elements include:
+ // a, b, big, code, em, font, i, nobr, s, small, strike, strong, tt, and u.
+ insertHTMLElement(token);
+ m_activeFormattingElements.append(currentElement());
+}
+
+void HTMLConstructionSite::insertScriptElement(AtomicHTMLToken& token)
+{
+ RefPtr<HTMLScriptElement> element = HTMLScriptElement::create(scriptTag, m_document, true);
+ element->setAttributeMap(token.takeAtributes(), m_fragmentScriptingPermission);
+ m_openElements.push(attach(currentElement(), element.release()));
+}
+
+void HTMLConstructionSite::insertForeignElement(AtomicHTMLToken& token, const AtomicString& namespaceURI)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ notImplemented(); // parseError when xmlns or xmlns:xlink are wrong.
+
+ RefPtr<Element> element = attach(currentElement(), createElement(token, namespaceURI));
+ if (!token.selfClosing())
+ m_openElements.push(element);
+}
+
+void HTMLConstructionSite::insertTextNode(const String& characters)
+{
+ AttachmentSite site;
+ site.parent = currentElement();
+ site.nextChild = 0;
+ if (m_redirectAttachToFosterParent)
+ findFosterSite(site);
+
+ Node* previousChild = site.nextChild ? site.nextChild->previousSibling() : site.parent->lastChild();
+ if (previousChild && previousChild->isTextNode()) {
+ // FIXME: We're only supposed to append to this text node if it
+ // was the last text node inserted by the parser.
+ CharacterData* textNode = static_cast<CharacterData*>(previousChild);
+ textNode->parserAppendData(characters);
+ return;
+ }
+
+ attachAtSite(site, Text::create(m_document, characters));
+}
+
+PassRefPtr<Element> HTMLConstructionSite::createElement(AtomicHTMLToken& token, const AtomicString& namespaceURI)
+{
+ QualifiedName tagName(nullAtom, token.name(), namespaceURI);
+ RefPtr<Element> element = m_document->createElement(tagName, true);
+ element->setAttributeMap(token.takeAtributes(), m_fragmentScriptingPermission);
+ return element.release();
+}
+
+PassRefPtr<Element> HTMLConstructionSite::createHTMLElement(AtomicHTMLToken& token)
+{
+ RefPtr<Element> element = createElement(token, xhtmlNamespaceURI);
+ ASSERT(element->isHTMLElement());
+ return element.release();
+}
+
+bool HTMLConstructionSite::indexOfFirstUnopenFormattingElement(unsigned& firstUnopenElementIndex) const
+{
+ if (m_activeFormattingElements.isEmpty())
+ return false;
+ unsigned index = m_activeFormattingElements.size();
+ do {
+ --index;
+ const HTMLFormattingElementList::Entry& entry = m_activeFormattingElements.at(index);
+ if (entry.isMarker() || m_openElements.contains(entry.element())) {
+ firstUnopenElementIndex = index + 1;
+ return firstUnopenElementIndex < m_activeFormattingElements.size();
+ }
+ } while (index);
+ firstUnopenElementIndex = index;
+ return true;
+}
+
+void HTMLConstructionSite::reconstructTheActiveFormattingElements()
+{
+ unsigned firstUnopenElementIndex;
+ if (!indexOfFirstUnopenFormattingElement(firstUnopenElementIndex))
+ return;
+
+ unsigned unopenEntryIndex = firstUnopenElementIndex;
+ ASSERT(unopenEntryIndex < m_activeFormattingElements.size());
+ for (; unopenEntryIndex < m_activeFormattingElements.size(); ++unopenEntryIndex) {
+ HTMLFormattingElementList::Entry& unopenedEntry = m_activeFormattingElements.at(unopenEntryIndex);
+ // FIXME: We're supposed to save the original token in the entry.
+ AtomicHTMLToken fakeToken(HTMLToken::StartTag, unopenedEntry.element()->localName());
+ insertHTMLElement(fakeToken);
+ unopenedEntry.replaceElement(currentElement());
+ }
+}
+
+void HTMLConstructionSite::generateImpliedEndTagsWithExclusion(const AtomicString& tagName)
+{
+ while (hasImpliedEndTag(currentElement()) && !currentElement()->hasLocalName(tagName))
+ m_openElements.pop();
+}
+
+void HTMLConstructionSite::generateImpliedEndTags()
+{
+ while (hasImpliedEndTag(currentElement()))
+ m_openElements.pop();
+}
+
+void HTMLConstructionSite::findFosterSite(AttachmentSite& site)
+{
+ HTMLElementStack::ElementRecord* lastTableElementRecord = m_openElements.topmost(tableTag.localName());
+ if (lastTableElementRecord) {
+ Element* lastTableElement = lastTableElementRecord->element();
+ if (Node* parent = lastTableElement->parent()) {
+ site.parent = parent;
+ site.nextChild = lastTableElement;
+ return;
+ }
+ site.parent = lastTableElementRecord->next()->element();
+ site.nextChild = 0;
+ return;
+ }
+ // Fragment case
+ site.parent = m_openElements.bottom(); // <html> element
+ site.nextChild = 0;
+}
+
+void HTMLConstructionSite::fosterParent(Node* node)
+{
+ AttachmentSite site;
+ findFosterSite(site);
+ attachAtSite(site, node);
+}
+
+}
diff --git a/WebCore/html/HTMLConstructionSite.h b/WebCore/html/HTMLConstructionSite.h
new file mode 100644
index 0000000..c0af9b3
--- /dev/null
+++ b/WebCore/html/HTMLConstructionSite.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2010 Google, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 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 GOOGLE 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 GOOGLE 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 HTMLConstructionSite_h
+#define HTMLConstructionSite_h
+
+#include "FragmentScriptingPermission.h"
+#include "HTMLElementStack.h"
+#include "HTMLFormattingElementList.h"
+#include "NotImplemented.h"
+#include <wtf/Noncopyable.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+
+class AtomicHTMLToken;
+class Document;
+class Element;
+
+class HTMLConstructionSite : public Noncopyable {
+public:
+ HTMLConstructionSite(Document*, FragmentScriptingPermission);
+ ~HTMLConstructionSite();
+
+ void insertDoctype(AtomicHTMLToken&);
+ void insertComment(AtomicHTMLToken&);
+ void insertCommentOnDocument(AtomicHTMLToken&);
+ void insertCommentOnHTMLHtmlElement(AtomicHTMLToken&);
+ void insertHTMLElement(AtomicHTMLToken&);
+ void insertSelfClosingHTMLElement(AtomicHTMLToken&);
+ void insertFormattingElement(AtomicHTMLToken&);
+ void insertHTMLHtmlElement(AtomicHTMLToken&);
+ void insertHTMLHeadElement(AtomicHTMLToken&);
+ void insertHTMLBodyElement(AtomicHTMLToken&);
+ void insertScriptElement(AtomicHTMLToken&);
+ void insertTextNode(const String&);
+ void insertForeignElement(AtomicHTMLToken&, const AtomicString& namespaceURI);
+
+ void insertHTMLHtmlStartTagBeforeHTML(AtomicHTMLToken&);
+ void insertHTMLHtmlStartTagInBody(AtomicHTMLToken&);
+ void insertHTMLBodyStartTagInBody(AtomicHTMLToken&);
+
+ PassRefPtr<Element> createHTMLElement(AtomicHTMLToken&);
+
+ void fosterParent(Node*);
+
+ bool indexOfFirstUnopenFormattingElement(unsigned& firstUnopenElementIndex) const;
+ void reconstructTheActiveFormattingElements();
+
+ void generateImpliedEndTags();
+ void generateImpliedEndTagsWithExclusion(const AtomicString& tagName);
+
+ Element* currentElement() const { return m_openElements.top(); }
+ Element* oneBelowTop() const { return m_openElements.oneBelowTop(); }
+
+ HTMLElementStack* openElements() const { return &m_openElements; }
+ HTMLFormattingElementList* activeFormattingElements() const { return &m_activeFormattingElements; }
+
+ Element* head() const { return m_head.get(); }
+
+ Element* form() const { return m_form.get(); }
+ PassRefPtr<Element> takeForm() { return m_form.release(); }
+
+ void setForm(PassRefPtr<Element> form) { m_form = form; }
+
+ class RedirectToFosterParentGuard : public Noncopyable {
+ public:
+ RedirectToFosterParentGuard(HTMLConstructionSite& tree, bool shouldRedirect)
+ : m_tree(tree)
+ , m_wasRedirectingBefore(tree.m_redirectAttachToFosterParent)
+ {
+ m_tree.m_redirectAttachToFosterParent = shouldRedirect;
+ }
+
+ ~RedirectToFosterParentGuard()
+ {
+ m_tree.m_redirectAttachToFosterParent = m_wasRedirectingBefore;
+ }
+
+ private:
+ HTMLConstructionSite& m_tree;
+ bool m_wasRedirectingBefore;
+ };
+
+private:
+ struct AttachmentSite {
+ Node* parent;
+ Node* nextChild;
+ };
+
+ template<typename ChildType>
+ PassRefPtr<ChildType> attach(Node* parent, PassRefPtr<ChildType> child);
+
+ void attachAtSite(const AttachmentSite&, PassRefPtr<Node> child);
+ void findFosterSite(AttachmentSite&);
+
+ PassRefPtr<Element> createElement(AtomicHTMLToken&, const AtomicString& namespaceURI);
+
+ PassRefPtr<Element> createHTMLElementAndAttachToCurrent(AtomicHTMLToken&);
+ void mergeAttributesFromTokenIntoElement(AtomicHTMLToken&, Element*);
+
+ Document* m_document;
+ RefPtr<Element> m_head;
+ RefPtr<Element> m_form;
+ mutable HTMLElementStack m_openElements;
+ mutable HTMLFormattingElementList m_activeFormattingElements;
+ FragmentScriptingPermission m_fragmentScriptingPermission;
+
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#parsing-main-intable
+ // In the "in table" insertion mode, we sometimes get into a state where
+ // "whenever a node would be inserted into the current node, it must instead
+ // be foster parented." This flag tracks whether we're in that state.
+ bool m_redirectAttachToFosterParent;
+};
+
+}
+
+#endif
diff --git a/WebCore/html/HTMLDocumentParser.cpp b/WebCore/html/HTMLDocumentParser.cpp
index 59b839d..129f6e9 100644
--- a/WebCore/html/HTMLDocumentParser.cpp
+++ b/WebCore/html/HTMLDocumentParser.cpp
@@ -222,9 +222,23 @@ void HTMLDocumentParser::insert(const SegmentedString& source)
if (m_parserStopped)
return;
+<<<<<<< HEAD
#ifdef ANDROID_INSTRUMENT
android::TimeCounter::start(android::TimeCounter::ParsingTimeCounter);
#endif
+=======
+ if (m_scriptRunner && !m_scriptRunner->inScriptExecution() && m_input.haveSeenEndOfFile()) {
+ // document.write was called without a current insertion point.
+ // According to the spec, we're supposed to implicitly open the
+ // document. Unfortunately, that behavior isn't sufficiently compatible
+ // with the web. The working group is mulling over what exactly to
+ // do. In the meantime, we're going to try one of the potential
+ // solutions, which is to ignore the write.
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=9767
+ return;
+ }
+
+>>>>>>> webkit.org at r63173
{
NestingLevelIncrementer nestingLevelIncrementer(m_writeNestingLevel);
@@ -354,6 +368,7 @@ void HTMLDocumentParser::resumeParsingAfterScriptExecution()
ASSERT(!inScriptExecution());
ASSERT(!m_treeBuilder->isPaused());
+ m_preloadScanner.clear();
pumpTokenizerIfPossible(AllowYield);
endIfDelayed();
}
diff --git a/WebCore/html/HTMLElementStack.cpp b/WebCore/html/HTMLElementStack.cpp
index 2f1b792..d1a1752 100644
--- a/WebCore/html/HTMLElementStack.cpp
+++ b/WebCore/html/HTMLElementStack.cpp
@@ -62,6 +62,7 @@ inline bool isListItemScopeMarker(Element* element)
|| element->hasTagName(olTag)
|| element->hasTagName(ulTag);
}
+
inline bool isTableScopeMarker(Element* element)
{
return element->hasTagName(tableTag)
@@ -76,6 +77,12 @@ inline bool isTableBodyScopeMarker(Element* element)
|| element->hasTagName(htmlTag);
}
+inline bool isTableRowScopeMarker(Element* element)
+{
+ return element->hasTagName(trTag)
+ || element->hasTagName(htmlTag);
+}
+
}
HTMLElementStack::ElementRecord::ElementRecord(PassRefPtr<Element> element, PassOwnPtr<ElementRecord> next)
@@ -136,6 +143,12 @@ void HTMLElementStack::pop()
popCommon();
}
+void HTMLElementStack::popUntilElementWithNamespace(const AtomicString& namespaceURI)
+{
+ while (top()->namespaceURI() != namespaceURI)
+ pop();
+}
+
void HTMLElementStack::popUntil(const AtomicString& tagName)
{
while (!top()->hasLocalName(tagName)) {
@@ -145,12 +158,24 @@ void HTMLElementStack::popUntil(const AtomicString& tagName)
}
}
+void HTMLElementStack::popUntilPopped(const AtomicString& tagName)
+{
+ popUntil(tagName);
+ pop();
+}
+
void HTMLElementStack::popUntil(Element* element)
{
while (top() != element)
pop();
}
+void HTMLElementStack::popUntilPopped(Element* element)
+{
+ popUntil(element);
+ pop();
+}
+
void HTMLElementStack::popUntilTableScopeMarker()
{
// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#clear-the-stack-back-to-a-table-context
@@ -165,6 +190,13 @@ void HTMLElementStack::popUntilTableBodyScopeMarker()
pop();
}
+void HTMLElementStack::popUntilTableRowScopeMarker()
+{
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#clear-the-stack-back-to-a-table-row-context
+ while (!isTableRowScopeMarker(top()))
+ pop();
+}
+
void HTMLElementStack::pushHTMLHtmlElement(PassRefPtr<Element> element)
{
ASSERT(!m_top); // <html> should always be the bottom of the stack.
@@ -226,14 +258,24 @@ void HTMLElementStack::insertAbove(PassRefPtr<Element> element, ElementRecord* r
HTMLElementStack::ElementRecord* HTMLElementStack::topRecord() const
{
+ ASSERT(m_top);
return m_top.get();
}
Element* HTMLElementStack::top() const
{
+ ASSERT(m_top->element());
return m_top->element();
}
+Element* HTMLElementStack::oneBelowTop() const
+{
+ // We should never be calling this if it could be 0.
+ ASSERT(m_top);
+ ASSERT(m_top->next());
+ return m_top->next()->element();
+}
+
Element* HTMLElementStack::bottom() const
{
return htmlElement();
@@ -297,6 +339,19 @@ bool inScopeCommon(HTMLElementStack::ElementRecord* top, const AtomicString& tar
return false;
}
+bool HTMLElementStack::hasOnlyHTMLElementsInScope() const
+{
+ for (ElementRecord* record = m_top.get(); record; record = record->next()) {
+ Element* element = record->element();
+ if (element->namespaceURI() != xhtmlNamespaceURI)
+ return false;
+ if (isScopeMarker(element))
+ return true;
+ }
+ ASSERT_NOT_REACHED(); // <html> is always on the stack and is a scope marker.
+ return true;
+}
+
bool HTMLElementStack::inScope(Element* targetElement) const
{
for (ElementRecord* pos = m_top.get(); pos; pos = pos->next()) {
@@ -315,16 +370,34 @@ bool HTMLElementStack::inScope(const AtomicString& targetTag) const
return inScopeCommon<isScopeMarker>(m_top.get(), targetTag);
}
+bool HTMLElementStack::inScope(const QualifiedName& tagName) const
+{
+ // FIXME: Is localName() right for non-html elements?
+ return inScope(tagName.localName());
+}
+
bool HTMLElementStack::inListItemScope(const AtomicString& targetTag) const
{
return inScopeCommon<isListItemScopeMarker>(m_top.get(), targetTag);
}
+bool HTMLElementStack::inListItemScope(const QualifiedName& tagName) const
+{
+ // FIXME: Is localName() right for non-html elements?
+ return inListItemScope(tagName.localName());
+}
+
bool HTMLElementStack::inTableScope(const AtomicString& targetTag) const
{
return inScopeCommon<isTableScopeMarker>(m_top.get(), targetTag);
}
+bool HTMLElementStack::inTableScope(const QualifiedName& tagName) const
+{
+ // FIXME: Is localName() right for non-html elements?
+ return inTableScope(tagName.localName());
+}
+
Element* HTMLElementStack::htmlElement() const
{
ASSERT(m_htmlElement);
@@ -376,4 +449,14 @@ void HTMLElementStack::removeNonTopCommon(Element* element)
ASSERT_NOT_REACHED();
}
+#ifndef NDEBUG
+
+void HTMLElementStack::show()
+{
+ for (ElementRecord* record = m_top.get(); record; record = record->next())
+ record->element()->showNode();
+}
+
+#endif
+
}
diff --git a/WebCore/html/HTMLElementStack.h b/WebCore/html/HTMLElementStack.h
index efc3fd8..8be4422 100644
--- a/WebCore/html/HTMLElementStack.h
+++ b/WebCore/html/HTMLElementStack.h
@@ -35,6 +35,7 @@ namespace WebCore {
class AtomicString;
class Element;
+class QualifiedName;
// NOTE: The HTML5 spec uses a backwards (grows downward) stack. We're using
// more standard (grows upwards) stack terminology here.
@@ -67,6 +68,7 @@ public:
};
Element* top() const;
+ Element* oneBelowTop() const;
ElementRecord* topRecord() const;
Element* bottom() const;
ElementRecord* find(Element*) const;
@@ -81,9 +83,13 @@ public:
void pop();
void popUntil(const AtomicString& tagName);
+ void popUntilElementWithNamespace(const AtomicString& namespaceURI);
void popUntil(Element*);
+ void popUntilPopped(const AtomicString& tagName);
+ void popUntilPopped(Element*);
void popUntilTableScopeMarker(); // "clear the stack back to a table context" in the spec.
void popUntilTableBodyScopeMarker(); // "clear the stack back to a table body context" in the spec.
+ void popUntilTableRowScopeMarker(); // "clear the stack back to a table row context" in the spec.
void popHTMLHeadElement();
void popHTMLBodyElement();
@@ -94,13 +100,22 @@ public:
bool inScope(Element*) const;
bool inScope(const AtomicString& tagName) const;
+ bool inScope(const QualifiedName&) const;
bool inListItemScope(const AtomicString& tagName) const;
+ bool inListItemScope(const QualifiedName&) const;
bool inTableScope(const AtomicString& tagName) const;
+ bool inTableScope(const QualifiedName&) const;
+
+ bool hasOnlyHTMLElementsInScope() const;
Element* htmlElement() const;
Element* headElement() const;
Element* bodyElement() const;
+#ifndef NDEBUG
+ void show();
+#endif
+
private:
void pushCommon(PassRefPtr<Element>);
void popCommon();
diff --git a/WebCore/html/HTMLEntityNames.json b/WebCore/html/HTMLEntityNames.json
new file mode 100644
index 0000000..7be8c5b
--- /dev/null
+++ b/WebCore/html/HTMLEntityNames.json
@@ -0,0 +1,8554 @@
+[
+ {
+ entity: "AElig;",
+ value: "U+000C6"
+ },
+ {
+ entity: "AElig",
+ value: "U+000C6"
+ },
+ {
+ entity: "AMP;",
+ value: "U+00026"
+ },
+ {
+ entity: "AMP",
+ value: "U+00026"
+ },
+ {
+ entity: "Aacute;",
+ value: "U+000C1"
+ },
+ {
+ entity: "Aacute",
+ value: "U+000C1"
+ },
+ {
+ entity: "Abreve;",
+ value: "U+00102"
+ },
+ {
+ entity: "Acirc;",
+ value: "U+000C2"
+ },
+ {
+ entity: "Acirc",
+ value: "U+000C2"
+ },
+ {
+ entity: "Acy;",
+ value: "U+00410"
+ },
+ {
+ entity: "Afr;",
+ value: "U+1D504"
+ },
+ {
+ entity: "Agrave;",
+ value: "U+000C0"
+ },
+ {
+ entity: "Agrave",
+ value: "U+000C0"
+ },
+ {
+ entity: "Alpha;",
+ value: "U+00391"
+ },
+ {
+ entity: "Amacr;",
+ value: "U+00100"
+ },
+ {
+ entity: "And;",
+ value: "U+02A53"
+ },
+ {
+ entity: "Aogon;",
+ value: "U+00104"
+ },
+ {
+ entity: "Aopf;",
+ value: "U+1D538"
+ },
+ {
+ entity: "ApplyFunction;",
+ value: "U+02061"
+ },
+ {
+ entity: "Aring;",
+ value: "U+000C5"
+ },
+ {
+ entity: "Aring",
+ value: "U+000C5"
+ },
+ {
+ entity: "Ascr;",
+ value: "U+1D49C"
+ },
+ {
+ entity: "Assign;",
+ value: "U+02254"
+ },
+ {
+ entity: "Atilde;",
+ value: "U+000C3"
+ },
+ {
+ entity: "Atilde",
+ value: "U+000C3"
+ },
+ {
+ entity: "Auml;",
+ value: "U+000C4"
+ },
+ {
+ entity: "Auml",
+ value: "U+000C4"
+ },
+ {
+ entity: "Backslash;",
+ value: "U+02216"
+ },
+ {
+ entity: "Barv;",
+ value: "U+02AE7"
+ },
+ {
+ entity: "Barwed;",
+ value: "U+02306"
+ },
+ {
+ entity: "Bcy;",
+ value: "U+00411"
+ },
+ {
+ entity: "Because;",
+ value: "U+02235"
+ },
+ {
+ entity: "Bernoullis;",
+ value: "U+0212C"
+ },
+ {
+ entity: "Beta;",
+ value: "U+00392"
+ },
+ {
+ entity: "Bfr;",
+ value: "U+1D505"
+ },
+ {
+ entity: "Bopf;",
+ value: "U+1D539"
+ },
+ {
+ entity: "Breve;",
+ value: "U+002D8"
+ },
+ {
+ entity: "Bscr;",
+ value: "U+0212C"
+ },
+ {
+ entity: "Bumpeq;",
+ value: "U+0224E"
+ },
+ {
+ entity: "CHcy;",
+ value: "U+00427"
+ },
+ {
+ entity: "COPY;",
+ value: "U+000A9"
+ },
+ {
+ entity: "COPY",
+ value: "U+000A9"
+ },
+ {
+ entity: "Cacute;",
+ value: "U+00106"
+ },
+ {
+ entity: "Cap;",
+ value: "U+022D2"
+ },
+ {
+ entity: "CapitalDifferentialD;",
+ value: "U+02145"
+ },
+ {
+ entity: "Cayleys;",
+ value: "U+0212D"
+ },
+ {
+ entity: "Ccaron;",
+ value: "U+0010C"
+ },
+ {
+ entity: "Ccedil;",
+ value: "U+000C7"
+ },
+ {
+ entity: "Ccedil",
+ value: "U+000C7"
+ },
+ {
+ entity: "Ccirc;",
+ value: "U+00108"
+ },
+ {
+ entity: "Cconint;",
+ value: "U+02230"
+ },
+ {
+ entity: "Cdot;",
+ value: "U+0010A"
+ },
+ {
+ entity: "Cedilla;",
+ value: "U+000B8"
+ },
+ {
+ entity: "CenterDot;",
+ value: "U+000B7"
+ },
+ {
+ entity: "Cfr;",
+ value: "U+0212D"
+ },
+ {
+ entity: "Chi;",
+ value: "U+003A7"
+ },
+ {
+ entity: "CircleDot;",
+ value: "U+02299"
+ },
+ {
+ entity: "CircleMinus;",
+ value: "U+02296"
+ },
+ {
+ entity: "CirclePlus;",
+ value: "U+02295"
+ },
+ {
+ entity: "CircleTimes;",
+ value: "U+02297"
+ },
+ {
+ entity: "ClockwiseContourIntegral;",
+ value: "U+02232"
+ },
+ {
+ entity: "CloseCurlyDoubleQuote;",
+ value: "U+0201D"
+ },
+ {
+ entity: "CloseCurlyQuote;",
+ value: "U+02019"
+ },
+ {
+ entity: "Colon;",
+ value: "U+02237"
+ },
+ {
+ entity: "Colone;",
+ value: "U+02A74"
+ },
+ {
+ entity: "Congruent;",
+ value: "U+02261"
+ },
+ {
+ entity: "Conint;",
+ value: "U+0222F"
+ },
+ {
+ entity: "ContourIntegral;",
+ value: "U+0222E"
+ },
+ {
+ entity: "Copf;",
+ value: "U+02102"
+ },
+ {
+ entity: "Coproduct;",
+ value: "U+02210"
+ },
+ {
+ entity: "CounterClockwiseContourIntegral;",
+ value: "U+02233"
+ },
+ {
+ entity: "Cross;",
+ value: "U+02A2F"
+ },
+ {
+ entity: "Cscr;",
+ value: "U+1D49E"
+ },
+ {
+ entity: "Cup;",
+ value: "U+022D3"
+ },
+ {
+ entity: "CupCap;",
+ value: "U+0224D"
+ },
+ {
+ entity: "DD;",
+ value: "U+02145"
+ },
+ {
+ entity: "DDotrahd;",
+ value: "U+02911"
+ },
+ {
+ entity: "DJcy;",
+ value: "U+00402"
+ },
+ {
+ entity: "DScy;",
+ value: "U+00405"
+ },
+ {
+ entity: "DZcy;",
+ value: "U+0040F"
+ },
+ {
+ entity: "Dagger;",
+ value: "U+02021"
+ },
+ {
+ entity: "Darr;",
+ value: "U+021A1"
+ },
+ {
+ entity: "Dashv;",
+ value: "U+02AE4"
+ },
+ {
+ entity: "Dcaron;",
+ value: "U+0010E"
+ },
+ {
+ entity: "Dcy;",
+ value: "U+00414"
+ },
+ {
+ entity: "Del;",
+ value: "U+02207"
+ },
+ {
+ entity: "Delta;",
+ value: "U+00394"
+ },
+ {
+ entity: "Dfr;",
+ value: "U+1D507"
+ },
+ {
+ entity: "DiacriticalAcute;",
+ value: "U+000B4"
+ },
+ {
+ entity: "DiacriticalDot;",
+ value: "U+002D9"
+ },
+ {
+ entity: "DiacriticalDoubleAcute;",
+ value: "U+002DD"
+ },
+ {
+ entity: "DiacriticalGrave;",
+ value: "U+00060"
+ },
+ {
+ entity: "DiacriticalTilde;",
+ value: "U+002DC"
+ },
+ {
+ entity: "Diamond;",
+ value: "U+022C4"
+ },
+ {
+ entity: "DifferentialD;",
+ value: "U+02146"
+ },
+ {
+ entity: "Dopf;",
+ value: "U+1D53B"
+ },
+ {
+ entity: "Dot;",
+ value: "U+000A8"
+ },
+ {
+ entity: "DotDot;",
+ value: "U+020DC"
+ },
+ {
+ entity: "DotEqual;",
+ value: "U+02250"
+ },
+ {
+ entity: "DoubleContourIntegral;",
+ value: "U+0222F"
+ },
+ {
+ entity: "DoubleDot;",
+ value: "U+000A8"
+ },
+ {
+ entity: "DoubleDownArrow;",
+ value: "U+021D3"
+ },
+ {
+ entity: "DoubleLeftArrow;",
+ value: "U+021D0"
+ },
+ {
+ entity: "DoubleLeftRightArrow;",
+ value: "U+021D4"
+ },
+ {
+ entity: "DoubleLeftTee;",
+ value: "U+02AE4"
+ },
+ {
+ entity: "DoubleLongLeftArrow;",
+ value: "U+027F8"
+ },
+ {
+ entity: "DoubleLongLeftRightArrow;",
+ value: "U+027FA"
+ },
+ {
+ entity: "DoubleLongRightArrow;",
+ value: "U+027F9"
+ },
+ {
+ entity: "DoubleRightArrow;",
+ value: "U+021D2"
+ },
+ {
+ entity: "DoubleRightTee;",
+ value: "U+022A8"
+ },
+ {
+ entity: "DoubleUpArrow;",
+ value: "U+021D1"
+ },
+ {
+ entity: "DoubleUpDownArrow;",
+ value: "U+021D5"
+ },
+ {
+ entity: "DoubleVerticalBar;",
+ value: "U+02225"
+ },
+ {
+ entity: "DownArrow;",
+ value: "U+02193"
+ },
+ {
+ entity: "DownArrowBar;",
+ value: "U+02913"
+ },
+ {
+ entity: "DownArrowUpArrow;",
+ value: "U+021F5"
+ },
+ {
+ entity: "DownBreve;",
+ value: "U+00311"
+ },
+ {
+ entity: "DownLeftRightVector;",
+ value: "U+02950"
+ },
+ {
+ entity: "DownLeftTeeVector;",
+ value: "U+0295E"
+ },
+ {
+ entity: "DownLeftVector;",
+ value: "U+021BD"
+ },
+ {
+ entity: "DownLeftVectorBar;",
+ value: "U+02956"
+ },
+ {
+ entity: "DownRightTeeVector;",
+ value: "U+0295F"
+ },
+ {
+ entity: "DownRightVector;",
+ value: "U+021C1"
+ },
+ {
+ entity: "DownRightVectorBar;",
+ value: "U+02957"
+ },
+ {
+ entity: "DownTee;",
+ value: "U+022A4"
+ },
+ {
+ entity: "DownTeeArrow;",
+ value: "U+021A7"
+ },
+ {
+ entity: "Downarrow;",
+ value: "U+021D3"
+ },
+ {
+ entity: "Dscr;",
+ value: "U+1D49F"
+ },
+ {
+ entity: "Dstrok;",
+ value: "U+00110"
+ },
+ {
+ entity: "ENG;",
+ value: "U+0014A"
+ },
+ {
+ entity: "ETH;",
+ value: "U+000D0"
+ },
+ {
+ entity: "ETH",
+ value: "U+000D0"
+ },
+ {
+ entity: "Eacute;",
+ value: "U+000C9"
+ },
+ {
+ entity: "Eacute",
+ value: "U+000C9"
+ },
+ {
+ entity: "Ecaron;",
+ value: "U+0011A"
+ },
+ {
+ entity: "Ecirc;",
+ value: "U+000CA"
+ },
+ {
+ entity: "Ecirc",
+ value: "U+000CA"
+ },
+ {
+ entity: "Ecy;",
+ value: "U+0042D"
+ },
+ {
+ entity: "Edot;",
+ value: "U+00116"
+ },
+ {
+ entity: "Efr;",
+ value: "U+1D508"
+ },
+ {
+ entity: "Egrave;",
+ value: "U+000C8"
+ },
+ {
+ entity: "Egrave",
+ value: "U+000C8"
+ },
+ {
+ entity: "Element;",
+ value: "U+02208"
+ },
+ {
+ entity: "Emacr;",
+ value: "U+00112"
+ },
+ {
+ entity: "EmptySmallSquare;",
+ value: "U+025FB"
+ },
+ {
+ entity: "EmptyVerySmallSquare;",
+ value: "U+025AB"
+ },
+ {
+ entity: "Eogon;",
+ value: "U+00118"
+ },
+ {
+ entity: "Eopf;",
+ value: "U+1D53C"
+ },
+ {
+ entity: "Epsilon;",
+ value: "U+00395"
+ },
+ {
+ entity: "Equal;",
+ value: "U+02A75"
+ },
+ {
+ entity: "EqualTilde;",
+ value: "U+02242"
+ },
+ {
+ entity: "Equilibrium;",
+ value: "U+021CC"
+ },
+ {
+ entity: "Escr;",
+ value: "U+02130"
+ },
+ {
+ entity: "Esim;",
+ value: "U+02A73"
+ },
+ {
+ entity: "Eta;",
+ value: "U+00397"
+ },
+ {
+ entity: "Euml;",
+ value: "U+000CB"
+ },
+ {
+ entity: "Euml",
+ value: "U+000CB"
+ },
+ {
+ entity: "Exists;",
+ value: "U+02203"
+ },
+ {
+ entity: "ExponentialE;",
+ value: "U+02147"
+ },
+ {
+ entity: "Fcy;",
+ value: "U+00424"
+ },
+ {
+ entity: "Ffr;",
+ value: "U+1D509"
+ },
+ {
+ entity: "FilledSmallSquare;",
+ value: "U+025FC"
+ },
+ {
+ entity: "FilledVerySmallSquare;",
+ value: "U+025AA"
+ },
+ {
+ entity: "Fopf;",
+ value: "U+1D53D"
+ },
+ {
+ entity: "ForAll;",
+ value: "U+02200"
+ },
+ {
+ entity: "Fouriertrf;",
+ value: "U+02131"
+ },
+ {
+ entity: "Fscr;",
+ value: "U+02131"
+ },
+ {
+ entity: "GJcy;",
+ value: "U+00403"
+ },
+ {
+ entity: "GT;",
+ value: "U+0003E"
+ },
+ {
+ entity: "GT",
+ value: "U+0003E"
+ },
+ {
+ entity: "Gamma;",
+ value: "U+00393"
+ },
+ {
+ entity: "Gammad;",
+ value: "U+003DC"
+ },
+ {
+ entity: "Gbreve;",
+ value: "U+0011E"
+ },
+ {
+ entity: "Gcedil;",
+ value: "U+00122"
+ },
+ {
+ entity: "Gcirc;",
+ value: "U+0011C"
+ },
+ {
+ entity: "Gcy;",
+ value: "U+00413"
+ },
+ {
+ entity: "Gdot;",
+ value: "U+00120"
+ },
+ {
+ entity: "Gfr;",
+ value: "U+1D50A"
+ },
+ {
+ entity: "Gg;",
+ value: "U+022D9"
+ },
+ {
+ entity: "Gopf;",
+ value: "U+1D53E"
+ },
+ {
+ entity: "GreaterEqual;",
+ value: "U+02265"
+ },
+ {
+ entity: "GreaterEqualLess;",
+ value: "U+022DB"
+ },
+ {
+ entity: "GreaterFullEqual;",
+ value: "U+02267"
+ },
+ {
+ entity: "GreaterGreater;",
+ value: "U+02AA2"
+ },
+ {
+ entity: "GreaterLess;",
+ value: "U+02277"
+ },
+ {
+ entity: "GreaterSlantEqual;",
+ value: "U+02A7E"
+ },
+ {
+ entity: "GreaterTilde;",
+ value: "U+02273"
+ },
+ {
+ entity: "Gscr;",
+ value: "U+1D4A2"
+ },
+ {
+ entity: "Gt;",
+ value: "U+0226B"
+ },
+ {
+ entity: "HARDcy;",
+ value: "U+0042A"
+ },
+ {
+ entity: "Hacek;",
+ value: "U+002C7"
+ },
+ {
+ entity: "Hat;",
+ value: "U+0005E"
+ },
+ {
+ entity: "Hcirc;",
+ value: "U+00124"
+ },
+ {
+ entity: "Hfr;",
+ value: "U+0210C"
+ },
+ {
+ entity: "HilbertSpace;",
+ value: "U+0210B"
+ },
+ {
+ entity: "Hopf;",
+ value: "U+0210D"
+ },
+ {
+ entity: "HorizontalLine;",
+ value: "U+02500"
+ },
+ {
+ entity: "Hscr;",
+ value: "U+0210B"
+ },
+ {
+ entity: "Hstrok;",
+ value: "U+00126"
+ },
+ {
+ entity: "HumpDownHump;",
+ value: "U+0224E"
+ },
+ {
+ entity: "HumpEqual;",
+ value: "U+0224F"
+ },
+ {
+ entity: "IEcy;",
+ value: "U+00415"
+ },
+ {
+ entity: "IJlig;",
+ value: "U+00132"
+ },
+ {
+ entity: "IOcy;",
+ value: "U+00401"
+ },
+ {
+ entity: "Iacute;",
+ value: "U+000CD"
+ },
+ {
+ entity: "Iacute",
+ value: "U+000CD"
+ },
+ {
+ entity: "Icirc;",
+ value: "U+000CE"
+ },
+ {
+ entity: "Icirc",
+ value: "U+000CE"
+ },
+ {
+ entity: "Icy;",
+ value: "U+00418"
+ },
+ {
+ entity: "Idot;",
+ value: "U+00130"
+ },
+ {
+ entity: "Ifr;",
+ value: "U+02111"
+ },
+ {
+ entity: "Igrave;",
+ value: "U+000CC"
+ },
+ {
+ entity: "Igrave",
+ value: "U+000CC"
+ },
+ {
+ entity: "Im;",
+ value: "U+02111"
+ },
+ {
+ entity: "Imacr;",
+ value: "U+0012A"
+ },
+ {
+ entity: "ImaginaryI;",
+ value: "U+02148"
+ },
+ {
+ entity: "Implies;",
+ value: "U+021D2"
+ },
+ {
+ entity: "Int;",
+ value: "U+0222C"
+ },
+ {
+ entity: "Integral;",
+ value: "U+0222B"
+ },
+ {
+ entity: "Intersection;",
+ value: "U+022C2"
+ },
+ {
+ entity: "InvisibleComma;",
+ value: "U+02063"
+ },
+ {
+ entity: "InvisibleTimes;",
+ value: "U+02062"
+ },
+ {
+ entity: "Iogon;",
+ value: "U+0012E"
+ },
+ {
+ entity: "Iopf;",
+ value: "U+1D540"
+ },
+ {
+ entity: "Iota;",
+ value: "U+00399"
+ },
+ {
+ entity: "Iscr;",
+ value: "U+02110"
+ },
+ {
+ entity: "Itilde;",
+ value: "U+00128"
+ },
+ {
+ entity: "Iukcy;",
+ value: "U+00406"
+ },
+ {
+ entity: "Iuml;",
+ value: "U+000CF"
+ },
+ {
+ entity: "Iuml",
+ value: "U+000CF"
+ },
+ {
+ entity: "Jcirc;",
+ value: "U+00134"
+ },
+ {
+ entity: "Jcy;",
+ value: "U+00419"
+ },
+ {
+ entity: "Jfr;",
+ value: "U+1D50D"
+ },
+ {
+ entity: "Jopf;",
+ value: "U+1D541"
+ },
+ {
+ entity: "Jscr;",
+ value: "U+1D4A5"
+ },
+ {
+ entity: "Jsercy;",
+ value: "U+00408"
+ },
+ {
+ entity: "Jukcy;",
+ value: "U+00404"
+ },
+ {
+ entity: "KHcy;",
+ value: "U+00425"
+ },
+ {
+ entity: "KJcy;",
+ value: "U+0040C"
+ },
+ {
+ entity: "Kappa;",
+ value: "U+0039A"
+ },
+ {
+ entity: "Kcedil;",
+ value: "U+00136"
+ },
+ {
+ entity: "Kcy;",
+ value: "U+0041A"
+ },
+ {
+ entity: "Kfr;",
+ value: "U+1D50E"
+ },
+ {
+ entity: "Kopf;",
+ value: "U+1D542"
+ },
+ {
+ entity: "Kscr;",
+ value: "U+1D4A6"
+ },
+ {
+ entity: "LJcy;",
+ value: "U+00409"
+ },
+ {
+ entity: "LT;",
+ value: "U+0003C"
+ },
+ {
+ entity: "LT",
+ value: "U+0003C"
+ },
+ {
+ entity: "Lacute;",
+ value: "U+00139"
+ },
+ {
+ entity: "Lambda;",
+ value: "U+0039B"
+ },
+ {
+ entity: "Lang;",
+ value: "U+027EA"
+ },
+ {
+ entity: "Laplacetrf;",
+ value: "U+02112"
+ },
+ {
+ entity: "Larr;",
+ value: "U+0219E"
+ },
+ {
+ entity: "Lcaron;",
+ value: "U+0013D"
+ },
+ {
+ entity: "Lcedil;",
+ value: "U+0013B"
+ },
+ {
+ entity: "Lcy;",
+ value: "U+0041B"
+ },
+ {
+ entity: "LeftAngleBracket;",
+ value: "U+027E8"
+ },
+ {
+ entity: "LeftArrow;",
+ value: "U+02190"
+ },
+ {
+ entity: "LeftArrowBar;",
+ value: "U+021E4"
+ },
+ {
+ entity: "LeftArrowRightArrow;",
+ value: "U+021C6"
+ },
+ {
+ entity: "LeftCeiling;",
+ value: "U+02308"
+ },
+ {
+ entity: "LeftDoubleBracket;",
+ value: "U+027E6"
+ },
+ {
+ entity: "LeftDownTeeVector;",
+ value: "U+02961"
+ },
+ {
+ entity: "LeftDownVector;",
+ value: "U+021C3"
+ },
+ {
+ entity: "LeftDownVectorBar;",
+ value: "U+02959"
+ },
+ {
+ entity: "LeftFloor;",
+ value: "U+0230A"
+ },
+ {
+ entity: "LeftRightArrow;",
+ value: "U+02194"
+ },
+ {
+ entity: "LeftRightVector;",
+ value: "U+0294E"
+ },
+ {
+ entity: "LeftTee;",
+ value: "U+022A3"
+ },
+ {
+ entity: "LeftTeeArrow;",
+ value: "U+021A4"
+ },
+ {
+ entity: "LeftTeeVector;",
+ value: "U+0295A"
+ },
+ {
+ entity: "LeftTriangle;",
+ value: "U+022B2"
+ },
+ {
+ entity: "LeftTriangleBar;",
+ value: "U+029CF"
+ },
+ {
+ entity: "LeftTriangleEqual;",
+ value: "U+022B4"
+ },
+ {
+ entity: "LeftUpDownVector;",
+ value: "U+02951"
+ },
+ {
+ entity: "LeftUpTeeVector;",
+ value: "U+02960"
+ },
+ {
+ entity: "LeftUpVector;",
+ value: "U+021BF"
+ },
+ {
+ entity: "LeftUpVectorBar;",
+ value: "U+02958"
+ },
+ {
+ entity: "LeftVector;",
+ value: "U+021BC"
+ },
+ {
+ entity: "LeftVectorBar;",
+ value: "U+02952"
+ },
+ {
+ entity: "Leftarrow;",
+ value: "U+021D0"
+ },
+ {
+ entity: "Leftrightarrow;",
+ value: "U+021D4"
+ },
+ {
+ entity: "LessEqualGreater;",
+ value: "U+022DA"
+ },
+ {
+ entity: "LessFullEqual;",
+ value: "U+02266"
+ },
+ {
+ entity: "LessGreater;",
+ value: "U+02276"
+ },
+ {
+ entity: "LessLess;",
+ value: "U+02AA1"
+ },
+ {
+ entity: "LessSlantEqual;",
+ value: "U+02A7D"
+ },
+ {
+ entity: "LessTilde;",
+ value: "U+02272"
+ },
+ {
+ entity: "Lfr;",
+ value: "U+1D50F"
+ },
+ {
+ entity: "Ll;",
+ value: "U+022D8"
+ },
+ {
+ entity: "Lleftarrow;",
+ value: "U+021DA"
+ },
+ {
+ entity: "Lmidot;",
+ value: "U+0013F"
+ },
+ {
+ entity: "LongLeftArrow;",
+ value: "U+027F5"
+ },
+ {
+ entity: "LongLeftRightArrow;",
+ value: "U+027F7"
+ },
+ {
+ entity: "LongRightArrow;",
+ value: "U+027F6"
+ },
+ {
+ entity: "Longleftarrow;",
+ value: "U+027F8"
+ },
+ {
+ entity: "Longleftrightarrow;",
+ value: "U+027FA"
+ },
+ {
+ entity: "Longrightarrow;",
+ value: "U+027F9"
+ },
+ {
+ entity: "Lopf;",
+ value: "U+1D543"
+ },
+ {
+ entity: "LowerLeftArrow;",
+ value: "U+02199"
+ },
+ {
+ entity: "LowerRightArrow;",
+ value: "U+02198"
+ },
+ {
+ entity: "Lscr;",
+ value: "U+02112"
+ },
+ {
+ entity: "Lsh;",
+ value: "U+021B0"
+ },
+ {
+ entity: "Lstrok;",
+ value: "U+00141"
+ },
+ {
+ entity: "Lt;",
+ value: "U+0226A"
+ },
+ {
+ entity: "Map;",
+ value: "U+02905"
+ },
+ {
+ entity: "Mcy;",
+ value: "U+0041C"
+ },
+ {
+ entity: "MediumSpace;",
+ value: "U+0205F"
+ },
+ {
+ entity: "Mellintrf;",
+ value: "U+02133"
+ },
+ {
+ entity: "Mfr;",
+ value: "U+1D510"
+ },
+ {
+ entity: "MinusPlus;",
+ value: "U+02213"
+ },
+ {
+ entity: "Mopf;",
+ value: "U+1D544"
+ },
+ {
+ entity: "Mscr;",
+ value: "U+02133"
+ },
+ {
+ entity: "Mu;",
+ value: "U+0039C"
+ },
+ {
+ entity: "NJcy;",
+ value: "U+0040A"
+ },
+ {
+ entity: "Nacute;",
+ value: "U+00143"
+ },
+ {
+ entity: "Ncaron;",
+ value: "U+00147"
+ },
+ {
+ entity: "Ncedil;",
+ value: "U+00145"
+ },
+ {
+ entity: "Ncy;",
+ value: "U+0041D"
+ },
+ {
+ entity: "NegativeMediumSpace;",
+ value: "U+0200B"
+ },
+ {
+ entity: "NegativeThickSpace;",
+ value: "U+0200B"
+ },
+ {
+ entity: "NegativeThinSpace;",
+ value: "U+0200B"
+ },
+ {
+ entity: "NegativeVeryThinSpace;",
+ value: "U+0200B"
+ },
+ {
+ entity: "NestedGreaterGreater;",
+ value: "U+0226B"
+ },
+ {
+ entity: "NestedLessLess;",
+ value: "U+0226A"
+ },
+ {
+ entity: "NewLine;",
+ value: "U+0000A"
+ },
+ {
+ entity: "Nfr;",
+ value: "U+1D511"
+ },
+ {
+ entity: "NoBreak;",
+ value: "U+02060"
+ },
+ {
+ entity: "NonBreakingSpace;",
+ value: "U+000A0"
+ },
+ {
+ entity: "Nopf;",
+ value: "U+02115"
+ },
+ {
+ entity: "Not;",
+ value: "U+02AEC"
+ },
+ {
+ entity: "NotCongruent;",
+ value: "U+02262"
+ },
+ {
+ entity: "NotCupCap;",
+ value: "U+0226D"
+ },
+ {
+ entity: "NotDoubleVerticalBar;",
+ value: "U+02226"
+ },
+ {
+ entity: "NotElement;",
+ value: "U+02209"
+ },
+ {
+ entity: "NotEqual;",
+ value: "U+02260"
+ },
+ {
+ entity: "NotExists;",
+ value: "U+02204"
+ },
+ {
+ entity: "NotGreater;",
+ value: "U+0226F"
+ },
+ {
+ entity: "NotGreaterEqual;",
+ value: "U+02271"
+ },
+ {
+ entity: "NotGreaterLess;",
+ value: "U+02279"
+ },
+ {
+ entity: "NotGreaterTilde;",
+ value: "U+02275"
+ },
+ {
+ entity: "NotLeftTriangle;",
+ value: "U+022EA"
+ },
+ {
+ entity: "NotLeftTriangleEqual;",
+ value: "U+022EC"
+ },
+ {
+ entity: "NotLess;",
+ value: "U+0226E"
+ },
+ {
+ entity: "NotLessEqual;",
+ value: "U+02270"
+ },
+ {
+ entity: "NotLessGreater;",
+ value: "U+02278"
+ },
+ {
+ entity: "NotLessTilde;",
+ value: "U+02274"
+ },
+ {
+ entity: "NotPrecedes;",
+ value: "U+02280"
+ },
+ {
+ entity: "NotPrecedesSlantEqual;",
+ value: "U+022E0"
+ },
+ {
+ entity: "NotReverseElement;",
+ value: "U+0220C"
+ },
+ {
+ entity: "NotRightTriangle;",
+ value: "U+022EB"
+ },
+ {
+ entity: "NotRightTriangleEqual;",
+ value: "U+022ED"
+ },
+ {
+ entity: "NotSquareSubsetEqual;",
+ value: "U+022E2"
+ },
+ {
+ entity: "NotSquareSupersetEqual;",
+ value: "U+022E3"
+ },
+ {
+ entity: "NotSubsetEqual;",
+ value: "U+02288"
+ },
+ {
+ entity: "NotSucceeds;",
+ value: "U+02281"
+ },
+ {
+ entity: "NotSucceedsSlantEqual;",
+ value: "U+022E1"
+ },
+ {
+ entity: "NotSupersetEqual;",
+ value: "U+02289"
+ },
+ {
+ entity: "NotTilde;",
+ value: "U+02241"
+ },
+ {
+ entity: "NotTildeEqual;",
+ value: "U+02244"
+ },
+ {
+ entity: "NotTildeFullEqual;",
+ value: "U+02247"
+ },
+ {
+ entity: "NotTildeTilde;",
+ value: "U+02249"
+ },
+ {
+ entity: "NotVerticalBar;",
+ value: "U+02224"
+ },
+ {
+ entity: "Nscr;",
+ value: "U+1D4A9"
+ },
+ {
+ entity: "Ntilde;",
+ value: "U+000D1"
+ },
+ {
+ entity: "Ntilde",
+ value: "U+000D1"
+ },
+ {
+ entity: "Nu;",
+ value: "U+0039D"
+ },
+ {
+ entity: "OElig;",
+ value: "U+00152"
+ },
+ {
+ entity: "Oacute;",
+ value: "U+000D3"
+ },
+ {
+ entity: "Oacute",
+ value: "U+000D3"
+ },
+ {
+ entity: "Ocirc;",
+ value: "U+000D4"
+ },
+ {
+ entity: "Ocirc",
+ value: "U+000D4"
+ },
+ {
+ entity: "Ocy;",
+ value: "U+0041E"
+ },
+ {
+ entity: "Odblac;",
+ value: "U+00150"
+ },
+ {
+ entity: "Ofr;",
+ value: "U+1D512"
+ },
+ {
+ entity: "Ograve;",
+ value: "U+000D2"
+ },
+ {
+ entity: "Ograve",
+ value: "U+000D2"
+ },
+ {
+ entity: "Omacr;",
+ value: "U+0014C"
+ },
+ {
+ entity: "Omega;",
+ value: "U+003A9"
+ },
+ {
+ entity: "Omicron;",
+ value: "U+0039F"
+ },
+ {
+ entity: "Oopf;",
+ value: "U+1D546"
+ },
+ {
+ entity: "OpenCurlyDoubleQuote;",
+ value: "U+0201C"
+ },
+ {
+ entity: "OpenCurlyQuote;",
+ value: "U+02018"
+ },
+ {
+ entity: "Or;",
+ value: "U+02A54"
+ },
+ {
+ entity: "Oscr;",
+ value: "U+1D4AA"
+ },
+ {
+ entity: "Oslash;",
+ value: "U+000D8"
+ },
+ {
+ entity: "Oslash",
+ value: "U+000D8"
+ },
+ {
+ entity: "Otilde;",
+ value: "U+000D5"
+ },
+ {
+ entity: "Otilde",
+ value: "U+000D5"
+ },
+ {
+ entity: "Otimes;",
+ value: "U+02A37"
+ },
+ {
+ entity: "Ouml;",
+ value: "U+000D6"
+ },
+ {
+ entity: "Ouml",
+ value: "U+000D6"
+ },
+ {
+ entity: "OverBar;",
+ value: "U+0203E"
+ },
+ {
+ entity: "OverBrace;",
+ value: "U+023DE"
+ },
+ {
+ entity: "OverBracket;",
+ value: "U+023B4"
+ },
+ {
+ entity: "OverParenthesis;",
+ value: "U+023DC"
+ },
+ {
+ entity: "PartialD;",
+ value: "U+02202"
+ },
+ {
+ entity: "Pcy;",
+ value: "U+0041F"
+ },
+ {
+ entity: "Pfr;",
+ value: "U+1D513"
+ },
+ {
+ entity: "Phi;",
+ value: "U+003A6"
+ },
+ {
+ entity: "Pi;",
+ value: "U+003A0"
+ },
+ {
+ entity: "PlusMinus;",
+ value: "U+000B1"
+ },
+ {
+ entity: "Poincareplane;",
+ value: "U+0210C"
+ },
+ {
+ entity: "Popf;",
+ value: "U+02119"
+ },
+ {
+ entity: "Pr;",
+ value: "U+02ABB"
+ },
+ {
+ entity: "Precedes;",
+ value: "U+0227A"
+ },
+ {
+ entity: "PrecedesEqual;",
+ value: "U+02AAF"
+ },
+ {
+ entity: "PrecedesSlantEqual;",
+ value: "U+0227C"
+ },
+ {
+ entity: "PrecedesTilde;",
+ value: "U+0227E"
+ },
+ {
+ entity: "Prime;",
+ value: "U+02033"
+ },
+ {
+ entity: "Product;",
+ value: "U+0220F"
+ },
+ {
+ entity: "Proportion;",
+ value: "U+02237"
+ },
+ {
+ entity: "Proportional;",
+ value: "U+0221D"
+ },
+ {
+ entity: "Pscr;",
+ value: "U+1D4AB"
+ },
+ {
+ entity: "Psi;",
+ value: "U+003A8"
+ },
+ {
+ entity: "QUOT;",
+ value: "U+00022"
+ },
+ {
+ entity: "QUOT",
+ value: "U+00022"
+ },
+ {
+ entity: "Qfr;",
+ value: "U+1D514"
+ },
+ {
+ entity: "Qopf;",
+ value: "U+0211A"
+ },
+ {
+ entity: "Qscr;",
+ value: "U+1D4AC"
+ },
+ {
+ entity: "RBarr;",
+ value: "U+02910"
+ },
+ {
+ entity: "REG;",
+ value: "U+000AE"
+ },
+ {
+ entity: "REG",
+ value: "U+000AE"
+ },
+ {
+ entity: "Racute;",
+ value: "U+00154"
+ },
+ {
+ entity: "Rang;",
+ value: "U+027EB"
+ },
+ {
+ entity: "Rarr;",
+ value: "U+021A0"
+ },
+ {
+ entity: "Rarrtl;",
+ value: "U+02916"
+ },
+ {
+ entity: "Rcaron;",
+ value: "U+00158"
+ },
+ {
+ entity: "Rcedil;",
+ value: "U+00156"
+ },
+ {
+ entity: "Rcy;",
+ value: "U+00420"
+ },
+ {
+ entity: "Re;",
+ value: "U+0211C"
+ },
+ {
+ entity: "ReverseElement;",
+ value: "U+0220B"
+ },
+ {
+ entity: "ReverseEquilibrium;",
+ value: "U+021CB"
+ },
+ {
+ entity: "ReverseUpEquilibrium;",
+ value: "U+0296F"
+ },
+ {
+ entity: "Rfr;",
+ value: "U+0211C"
+ },
+ {
+ entity: "Rho;",
+ value: "U+003A1"
+ },
+ {
+ entity: "RightAngleBracket;",
+ value: "U+027E9"
+ },
+ {
+ entity: "RightArrow;",
+ value: "U+02192"
+ },
+ {
+ entity: "RightArrowBar;",
+ value: "U+021E5"
+ },
+ {
+ entity: "RightArrowLeftArrow;",
+ value: "U+021C4"
+ },
+ {
+ entity: "RightCeiling;",
+ value: "U+02309"
+ },
+ {
+ entity: "RightDoubleBracket;",
+ value: "U+027E7"
+ },
+ {
+ entity: "RightDownTeeVector;",
+ value: "U+0295D"
+ },
+ {
+ entity: "RightDownVector;",
+ value: "U+021C2"
+ },
+ {
+ entity: "RightDownVectorBar;",
+ value: "U+02955"
+ },
+ {
+ entity: "RightFloor;",
+ value: "U+0230B"
+ },
+ {
+ entity: "RightTee;",
+ value: "U+022A2"
+ },
+ {
+ entity: "RightTeeArrow;",
+ value: "U+021A6"
+ },
+ {
+ entity: "RightTeeVector;",
+ value: "U+0295B"
+ },
+ {
+ entity: "RightTriangle;",
+ value: "U+022B3"
+ },
+ {
+ entity: "RightTriangleBar;",
+ value: "U+029D0"
+ },
+ {
+ entity: "RightTriangleEqual;",
+ value: "U+022B5"
+ },
+ {
+ entity: "RightUpDownVector;",
+ value: "U+0294F"
+ },
+ {
+ entity: "RightUpTeeVector;",
+ value: "U+0295C"
+ },
+ {
+ entity: "RightUpVector;",
+ value: "U+021BE"
+ },
+ {
+ entity: "RightUpVectorBar;",
+ value: "U+02954"
+ },
+ {
+ entity: "RightVector;",
+ value: "U+021C0"
+ },
+ {
+ entity: "RightVectorBar;",
+ value: "U+02953"
+ },
+ {
+ entity: "Rightarrow;",
+ value: "U+021D2"
+ },
+ {
+ entity: "Ropf;",
+ value: "U+0211D"
+ },
+ {
+ entity: "RoundImplies;",
+ value: "U+02970"
+ },
+ {
+ entity: "Rrightarrow;",
+ value: "U+021DB"
+ },
+ {
+ entity: "Rscr;",
+ value: "U+0211B"
+ },
+ {
+ entity: "Rsh;",
+ value: "U+021B1"
+ },
+ {
+ entity: "RuleDelayed;",
+ value: "U+029F4"
+ },
+ {
+ entity: "SHCHcy;",
+ value: "U+00429"
+ },
+ {
+ entity: "SHcy;",
+ value: "U+00428"
+ },
+ {
+ entity: "SOFTcy;",
+ value: "U+0042C"
+ },
+ {
+ entity: "Sacute;",
+ value: "U+0015A"
+ },
+ {
+ entity: "Sc;",
+ value: "U+02ABC"
+ },
+ {
+ entity: "Scaron;",
+ value: "U+00160"
+ },
+ {
+ entity: "Scedil;",
+ value: "U+0015E"
+ },
+ {
+ entity: "Scirc;",
+ value: "U+0015C"
+ },
+ {
+ entity: "Scy;",
+ value: "U+00421"
+ },
+ {
+ entity: "Sfr;",
+ value: "U+1D516"
+ },
+ {
+ entity: "ShortDownArrow;",
+ value: "U+02193"
+ },
+ {
+ entity: "ShortLeftArrow;",
+ value: "U+02190"
+ },
+ {
+ entity: "ShortRightArrow;",
+ value: "U+02192"
+ },
+ {
+ entity: "ShortUpArrow;",
+ value: "U+02191"
+ },
+ {
+ entity: "Sigma;",
+ value: "U+003A3"
+ },
+ {
+ entity: "SmallCircle;",
+ value: "U+02218"
+ },
+ {
+ entity: "Sopf;",
+ value: "U+1D54A"
+ },
+ {
+ entity: "Sqrt;",
+ value: "U+0221A"
+ },
+ {
+ entity: "Square;",
+ value: "U+025A1"
+ },
+ {
+ entity: "SquareIntersection;",
+ value: "U+02293"
+ },
+ {
+ entity: "SquareSubset;",
+ value: "U+0228F"
+ },
+ {
+ entity: "SquareSubsetEqual;",
+ value: "U+02291"
+ },
+ {
+ entity: "SquareSuperset;",
+ value: "U+02290"
+ },
+ {
+ entity: "SquareSupersetEqual;",
+ value: "U+02292"
+ },
+ {
+ entity: "SquareUnion;",
+ value: "U+02294"
+ },
+ {
+ entity: "Sscr;",
+ value: "U+1D4AE"
+ },
+ {
+ entity: "Star;",
+ value: "U+022C6"
+ },
+ {
+ entity: "Sub;",
+ value: "U+022D0"
+ },
+ {
+ entity: "Subset;",
+ value: "U+022D0"
+ },
+ {
+ entity: "SubsetEqual;",
+ value: "U+02286"
+ },
+ {
+ entity: "Succeeds;",
+ value: "U+0227B"
+ },
+ {
+ entity: "SucceedsEqual;",
+ value: "U+02AB0"
+ },
+ {
+ entity: "SucceedsSlantEqual;",
+ value: "U+0227D"
+ },
+ {
+ entity: "SucceedsTilde;",
+ value: "U+0227F"
+ },
+ {
+ entity: "SuchThat;",
+ value: "U+0220B"
+ },
+ {
+ entity: "Sum;",
+ value: "U+02211"
+ },
+ {
+ entity: "Sup;",
+ value: "U+022D1"
+ },
+ {
+ entity: "Superset;",
+ value: "U+02283"
+ },
+ {
+ entity: "SupersetEqual;",
+ value: "U+02287"
+ },
+ {
+ entity: "Supset;",
+ value: "U+022D1"
+ },
+ {
+ entity: "THORN;",
+ value: "U+000DE"
+ },
+ {
+ entity: "THORN",
+ value: "U+000DE"
+ },
+ {
+ entity: "TRADE;",
+ value: "U+02122"
+ },
+ {
+ entity: "TSHcy;",
+ value: "U+0040B"
+ },
+ {
+ entity: "TScy;",
+ value: "U+00426"
+ },
+ {
+ entity: "Tab;",
+ value: "U+00009"
+ },
+ {
+ entity: "Tau;",
+ value: "U+003A4"
+ },
+ {
+ entity: "Tcaron;",
+ value: "U+00164"
+ },
+ {
+ entity: "Tcedil;",
+ value: "U+00162"
+ },
+ {
+ entity: "Tcy;",
+ value: "U+00422"
+ },
+ {
+ entity: "Tfr;",
+ value: "U+1D517"
+ },
+ {
+ entity: "Therefore;",
+ value: "U+02234"
+ },
+ {
+ entity: "Theta;",
+ value: "U+00398"
+ },
+ {
+ entity: "ThinSpace;",
+ value: "U+02009"
+ },
+ {
+ entity: "Tilde;",
+ value: "U+0223C"
+ },
+ {
+ entity: "TildeEqual;",
+ value: "U+02243"
+ },
+ {
+ entity: "TildeFullEqual;",
+ value: "U+02245"
+ },
+ {
+ entity: "TildeTilde;",
+ value: "U+02248"
+ },
+ {
+ entity: "Topf;",
+ value: "U+1D54B"
+ },
+ {
+ entity: "TripleDot;",
+ value: "U+020DB"
+ },
+ {
+ entity: "Tscr;",
+ value: "U+1D4AF"
+ },
+ {
+ entity: "Tstrok;",
+ value: "U+00166"
+ },
+ {
+ entity: "Uacute;",
+ value: "U+000DA"
+ },
+ {
+ entity: "Uacute",
+ value: "U+000DA"
+ },
+ {
+ entity: "Uarr;",
+ value: "U+0219F"
+ },
+ {
+ entity: "Uarrocir;",
+ value: "U+02949"
+ },
+ {
+ entity: "Ubrcy;",
+ value: "U+0040E"
+ },
+ {
+ entity: "Ubreve;",
+ value: "U+0016C"
+ },
+ {
+ entity: "Ucirc;",
+ value: "U+000DB"
+ },
+ {
+ entity: "Ucirc",
+ value: "U+000DB"
+ },
+ {
+ entity: "Ucy;",
+ value: "U+00423"
+ },
+ {
+ entity: "Udblac;",
+ value: "U+00170"
+ },
+ {
+ entity: "Ufr;",
+ value: "U+1D518"
+ },
+ {
+ entity: "Ugrave;",
+ value: "U+000D9"
+ },
+ {
+ entity: "Ugrave",
+ value: "U+000D9"
+ },
+ {
+ entity: "Umacr;",
+ value: "U+0016A"
+ },
+ {
+ entity: "UnderBar;",
+ value: "U+0005F"
+ },
+ {
+ entity: "UnderBrace;",
+ value: "U+023DF"
+ },
+ {
+ entity: "UnderBracket;",
+ value: "U+023B5"
+ },
+ {
+ entity: "UnderParenthesis;",
+ value: "U+023DD"
+ },
+ {
+ entity: "Union;",
+ value: "U+022C3"
+ },
+ {
+ entity: "UnionPlus;",
+ value: "U+0228E"
+ },
+ {
+ entity: "Uogon;",
+ value: "U+00172"
+ },
+ {
+ entity: "Uopf;",
+ value: "U+1D54C"
+ },
+ {
+ entity: "UpArrow;",
+ value: "U+02191"
+ },
+ {
+ entity: "UpArrowBar;",
+ value: "U+02912"
+ },
+ {
+ entity: "UpArrowDownArrow;",
+ value: "U+021C5"
+ },
+ {
+ entity: "UpDownArrow;",
+ value: "U+02195"
+ },
+ {
+ entity: "UpEquilibrium;",
+ value: "U+0296E"
+ },
+ {
+ entity: "UpTee;",
+ value: "U+022A5"
+ },
+ {
+ entity: "UpTeeArrow;",
+ value: "U+021A5"
+ },
+ {
+ entity: "Uparrow;",
+ value: "U+021D1"
+ },
+ {
+ entity: "Updownarrow;",
+ value: "U+021D5"
+ },
+ {
+ entity: "UpperLeftArrow;",
+ value: "U+02196"
+ },
+ {
+ entity: "UpperRightArrow;",
+ value: "U+02197"
+ },
+ {
+ entity: "Upsi;",
+ value: "U+003D2"
+ },
+ {
+ entity: "Upsilon;",
+ value: "U+003A5"
+ },
+ {
+ entity: "Uring;",
+ value: "U+0016E"
+ },
+ {
+ entity: "Uscr;",
+ value: "U+1D4B0"
+ },
+ {
+ entity: "Utilde;",
+ value: "U+00168"
+ },
+ {
+ entity: "Uuml;",
+ value: "U+000DC"
+ },
+ {
+ entity: "Uuml",
+ value: "U+000DC"
+ },
+ {
+ entity: "VDash;",
+ value: "U+022AB"
+ },
+ {
+ entity: "Vbar;",
+ value: "U+02AEB"
+ },
+ {
+ entity: "Vcy;",
+ value: "U+00412"
+ },
+ {
+ entity: "Vdash;",
+ value: "U+022A9"
+ },
+ {
+ entity: "Vdashl;",
+ value: "U+02AE6"
+ },
+ {
+ entity: "Vee;",
+ value: "U+022C1"
+ },
+ {
+ entity: "Verbar;",
+ value: "U+02016"
+ },
+ {
+ entity: "Vert;",
+ value: "U+02016"
+ },
+ {
+ entity: "VerticalBar;",
+ value: "U+02223"
+ },
+ {
+ entity: "VerticalLine;",
+ value: "U+0007C"
+ },
+ {
+ entity: "VerticalSeparator;",
+ value: "U+02758"
+ },
+ {
+ entity: "VerticalTilde;",
+ value: "U+02240"
+ },
+ {
+ entity: "VeryThinSpace;",
+ value: "U+0200A"
+ },
+ {
+ entity: "Vfr;",
+ value: "U+1D519"
+ },
+ {
+ entity: "Vopf;",
+ value: "U+1D54D"
+ },
+ {
+ entity: "Vscr;",
+ value: "U+1D4B1"
+ },
+ {
+ entity: "Vvdash;",
+ value: "U+022AA"
+ },
+ {
+ entity: "Wcirc;",
+ value: "U+00174"
+ },
+ {
+ entity: "Wedge;",
+ value: "U+022C0"
+ },
+ {
+ entity: "Wfr;",
+ value: "U+1D51A"
+ },
+ {
+ entity: "Wopf;",
+ value: "U+1D54E"
+ },
+ {
+ entity: "Wscr;",
+ value: "U+1D4B2"
+ },
+ {
+ entity: "Xfr;",
+ value: "U+1D51B"
+ },
+ {
+ entity: "Xi;",
+ value: "U+0039E"
+ },
+ {
+ entity: "Xopf;",
+ value: "U+1D54F"
+ },
+ {
+ entity: "Xscr;",
+ value: "U+1D4B3"
+ },
+ {
+ entity: "YAcy;",
+ value: "U+0042F"
+ },
+ {
+ entity: "YIcy;",
+ value: "U+00407"
+ },
+ {
+ entity: "YUcy;",
+ value: "U+0042E"
+ },
+ {
+ entity: "Yacute;",
+ value: "U+000DD"
+ },
+ {
+ entity: "Yacute",
+ value: "U+000DD"
+ },
+ {
+ entity: "Ycirc;",
+ value: "U+00176"
+ },
+ {
+ entity: "Ycy;",
+ value: "U+0042B"
+ },
+ {
+ entity: "Yfr;",
+ value: "U+1D51C"
+ },
+ {
+ entity: "Yopf;",
+ value: "U+1D550"
+ },
+ {
+ entity: "Yscr;",
+ value: "U+1D4B4"
+ },
+ {
+ entity: "Yuml;",
+ value: "U+00178"
+ },
+ {
+ entity: "ZHcy;",
+ value: "U+00416"
+ },
+ {
+ entity: "Zacute;",
+ value: "U+00179"
+ },
+ {
+ entity: "Zcaron;",
+ value: "U+0017D"
+ },
+ {
+ entity: "Zcy;",
+ value: "U+00417"
+ },
+ {
+ entity: "Zdot;",
+ value: "U+0017B"
+ },
+ {
+ entity: "ZeroWidthSpace;",
+ value: "U+0200B"
+ },
+ {
+ entity: "Zeta;",
+ value: "U+00396"
+ },
+ {
+ entity: "Zfr;",
+ value: "U+02128"
+ },
+ {
+ entity: "Zopf;",
+ value: "U+02124"
+ },
+ {
+ entity: "Zscr;",
+ value: "U+1D4B5"
+ },
+ {
+ entity: "aacute;",
+ value: "U+000E1"
+ },
+ {
+ entity: "aacute",
+ value: "U+000E1"
+ },
+ {
+ entity: "abreve;",
+ value: "U+00103"
+ },
+ {
+ entity: "ac;",
+ value: "U+0223E"
+ },
+ {
+ entity: "acd;",
+ value: "U+0223F"
+ },
+ {
+ entity: "acirc;",
+ value: "U+000E2"
+ },
+ {
+ entity: "acirc",
+ value: "U+000E2"
+ },
+ {
+ entity: "acute;",
+ value: "U+000B4"
+ },
+ {
+ entity: "acute",
+ value: "U+000B4"
+ },
+ {
+ entity: "acy;",
+ value: "U+00430"
+ },
+ {
+ entity: "aelig;",
+ value: "U+000E6"
+ },
+ {
+ entity: "aelig",
+ value: "U+000E6"
+ },
+ {
+ entity: "af;",
+ value: "U+02061"
+ },
+ {
+ entity: "afr;",
+ value: "U+1D51E"
+ },
+ {
+ entity: "agrave;",
+ value: "U+000E0"
+ },
+ {
+ entity: "agrave",
+ value: "U+000E0"
+ },
+ {
+ entity: "alefsym;",
+ value: "U+02135"
+ },
+ {
+ entity: "aleph;",
+ value: "U+02135"
+ },
+ {
+ entity: "alpha;",
+ value: "U+003B1"
+ },
+ {
+ entity: "amacr;",
+ value: "U+00101"
+ },
+ {
+ entity: "amalg;",
+ value: "U+02A3F"
+ },
+ {
+ entity: "amp;",
+ value: "U+00026"
+ },
+ {
+ entity: "amp",
+ value: "U+00026"
+ },
+ {
+ entity: "and;",
+ value: "U+02227"
+ },
+ {
+ entity: "andand;",
+ value: "U+02A55"
+ },
+ {
+ entity: "andd;",
+ value: "U+02A5C"
+ },
+ {
+ entity: "andslope;",
+ value: "U+02A58"
+ },
+ {
+ entity: "andv;",
+ value: "U+02A5A"
+ },
+ {
+ entity: "ang;",
+ value: "U+02220"
+ },
+ {
+ entity: "ange;",
+ value: "U+029A4"
+ },
+ {
+ entity: "angle;",
+ value: "U+02220"
+ },
+ {
+ entity: "angmsd;",
+ value: "U+02221"
+ },
+ {
+ entity: "angmsdaa;",
+ value: "U+029A8"
+ },
+ {
+ entity: "angmsdab;",
+ value: "U+029A9"
+ },
+ {
+ entity: "angmsdac;",
+ value: "U+029AA"
+ },
+ {
+ entity: "angmsdad;",
+ value: "U+029AB"
+ },
+ {
+ entity: "angmsdae;",
+ value: "U+029AC"
+ },
+ {
+ entity: "angmsdaf;",
+ value: "U+029AD"
+ },
+ {
+ entity: "angmsdag;",
+ value: "U+029AE"
+ },
+ {
+ entity: "angmsdah;",
+ value: "U+029AF"
+ },
+ {
+ entity: "angrt;",
+ value: "U+0221F"
+ },
+ {
+ entity: "angrtvb;",
+ value: "U+022BE"
+ },
+ {
+ entity: "angrtvbd;",
+ value: "U+0299D"
+ },
+ {
+ entity: "angsph;",
+ value: "U+02222"
+ },
+ {
+ entity: "angst;",
+ value: "U+000C5"
+ },
+ {
+ entity: "angzarr;",
+ value: "U+0237C"
+ },
+ {
+ entity: "aogon;",
+ value: "U+00105"
+ },
+ {
+ entity: "aopf;",
+ value: "U+1D552"
+ },
+ {
+ entity: "ap;",
+ value: "U+02248"
+ },
+ {
+ entity: "apE;",
+ value: "U+02A70"
+ },
+ {
+ entity: "apacir;",
+ value: "U+02A6F"
+ },
+ {
+ entity: "ape;",
+ value: "U+0224A"
+ },
+ {
+ entity: "apid;",
+ value: "U+0224B"
+ },
+ {
+ entity: "apos;",
+ value: "U+00027"
+ },
+ {
+ entity: "approx;",
+ value: "U+02248"
+ },
+ {
+ entity: "approxeq;",
+ value: "U+0224A"
+ },
+ {
+ entity: "aring;",
+ value: "U+000E5"
+ },
+ {
+ entity: "aring",
+ value: "U+000E5"
+ },
+ {
+ entity: "ascr;",
+ value: "U+1D4B6"
+ },
+ {
+ entity: "ast;",
+ value: "U+0002A"
+ },
+ {
+ entity: "asymp;",
+ value: "U+02248"
+ },
+ {
+ entity: "asympeq;",
+ value: "U+0224D"
+ },
+ {
+ entity: "atilde;",
+ value: "U+000E3"
+ },
+ {
+ entity: "atilde",
+ value: "U+000E3"
+ },
+ {
+ entity: "auml;",
+ value: "U+000E4"
+ },
+ {
+ entity: "auml",
+ value: "U+000E4"
+ },
+ {
+ entity: "awconint;",
+ value: "U+02233"
+ },
+ {
+ entity: "awint;",
+ value: "U+02A11"
+ },
+ {
+ entity: "bNot;",
+ value: "U+02AED"
+ },
+ {
+ entity: "backcong;",
+ value: "U+0224C"
+ },
+ {
+ entity: "backepsilon;",
+ value: "U+003F6"
+ },
+ {
+ entity: "backprime;",
+ value: "U+02035"
+ },
+ {
+ entity: "backsim;",
+ value: "U+0223D"
+ },
+ {
+ entity: "backsimeq;",
+ value: "U+022CD"
+ },
+ {
+ entity: "barvee;",
+ value: "U+022BD"
+ },
+ {
+ entity: "barwed;",
+ value: "U+02305"
+ },
+ {
+ entity: "barwedge;",
+ value: "U+02305"
+ },
+ {
+ entity: "bbrk;",
+ value: "U+023B5"
+ },
+ {
+ entity: "bbrktbrk;",
+ value: "U+023B6"
+ },
+ {
+ entity: "bcong;",
+ value: "U+0224C"
+ },
+ {
+ entity: "bcy;",
+ value: "U+00431"
+ },
+ {
+ entity: "bdquo;",
+ value: "U+0201E"
+ },
+ {
+ entity: "becaus;",
+ value: "U+02235"
+ },
+ {
+ entity: "because;",
+ value: "U+02235"
+ },
+ {
+ entity: "bemptyv;",
+ value: "U+029B0"
+ },
+ {
+ entity: "bepsi;",
+ value: "U+003F6"
+ },
+ {
+ entity: "bernou;",
+ value: "U+0212C"
+ },
+ {
+ entity: "beta;",
+ value: "U+003B2"
+ },
+ {
+ entity: "beth;",
+ value: "U+02136"
+ },
+ {
+ entity: "between;",
+ value: "U+0226C"
+ },
+ {
+ entity: "bfr;",
+ value: "U+1D51F"
+ },
+ {
+ entity: "bigcap;",
+ value: "U+022C2"
+ },
+ {
+ entity: "bigcirc;",
+ value: "U+025EF"
+ },
+ {
+ entity: "bigcup;",
+ value: "U+022C3"
+ },
+ {
+ entity: "bigodot;",
+ value: "U+02A00"
+ },
+ {
+ entity: "bigoplus;",
+ value: "U+02A01"
+ },
+ {
+ entity: "bigotimes;",
+ value: "U+02A02"
+ },
+ {
+ entity: "bigsqcup;",
+ value: "U+02A06"
+ },
+ {
+ entity: "bigstar;",
+ value: "U+02605"
+ },
+ {
+ entity: "bigtriangledown;",
+ value: "U+025BD"
+ },
+ {
+ entity: "bigtriangleup;",
+ value: "U+025B3"
+ },
+ {
+ entity: "biguplus;",
+ value: "U+02A04"
+ },
+ {
+ entity: "bigvee;",
+ value: "U+022C1"
+ },
+ {
+ entity: "bigwedge;",
+ value: "U+022C0"
+ },
+ {
+ entity: "bkarow;",
+ value: "U+0290D"
+ },
+ {
+ entity: "blacklozenge;",
+ value: "U+029EB"
+ },
+ {
+ entity: "blacksquare;",
+ value: "U+025AA"
+ },
+ {
+ entity: "blacktriangle;",
+ value: "U+025B4"
+ },
+ {
+ entity: "blacktriangledown;",
+ value: "U+025BE"
+ },
+ {
+ entity: "blacktriangleleft;",
+ value: "U+025C2"
+ },
+ {
+ entity: "blacktriangleright;",
+ value: "U+025B8"
+ },
+ {
+ entity: "blank;",
+ value: "U+02423"
+ },
+ {
+ entity: "blk12;",
+ value: "U+02592"
+ },
+ {
+ entity: "blk14;",
+ value: "U+02591"
+ },
+ {
+ entity: "blk34;",
+ value: "U+02593"
+ },
+ {
+ entity: "block;",
+ value: "U+02588"
+ },
+ {
+ entity: "bnot;",
+ value: "U+02310"
+ },
+ {
+ entity: "bopf;",
+ value: "U+1D553"
+ },
+ {
+ entity: "bot;",
+ value: "U+022A5"
+ },
+ {
+ entity: "bottom;",
+ value: "U+022A5"
+ },
+ {
+ entity: "bowtie;",
+ value: "U+022C8"
+ },
+ {
+ entity: "boxDL;",
+ value: "U+02557"
+ },
+ {
+ entity: "boxDR;",
+ value: "U+02554"
+ },
+ {
+ entity: "boxDl;",
+ value: "U+02556"
+ },
+ {
+ entity: "boxDr;",
+ value: "U+02553"
+ },
+ {
+ entity: "boxH;",
+ value: "U+02550"
+ },
+ {
+ entity: "boxHD;",
+ value: "U+02566"
+ },
+ {
+ entity: "boxHU;",
+ value: "U+02569"
+ },
+ {
+ entity: "boxHd;",
+ value: "U+02564"
+ },
+ {
+ entity: "boxHu;",
+ value: "U+02567"
+ },
+ {
+ entity: "boxUL;",
+ value: "U+0255D"
+ },
+ {
+ entity: "boxUR;",
+ value: "U+0255A"
+ },
+ {
+ entity: "boxUl;",
+ value: "U+0255C"
+ },
+ {
+ entity: "boxUr;",
+ value: "U+02559"
+ },
+ {
+ entity: "boxV;",
+ value: "U+02551"
+ },
+ {
+ entity: "boxVH;",
+ value: "U+0256C"
+ },
+ {
+ entity: "boxVL;",
+ value: "U+02563"
+ },
+ {
+ entity: "boxVR;",
+ value: "U+02560"
+ },
+ {
+ entity: "boxVh;",
+ value: "U+0256B"
+ },
+ {
+ entity: "boxVl;",
+ value: "U+02562"
+ },
+ {
+ entity: "boxVr;",
+ value: "U+0255F"
+ },
+ {
+ entity: "boxbox;",
+ value: "U+029C9"
+ },
+ {
+ entity: "boxdL;",
+ value: "U+02555"
+ },
+ {
+ entity: "boxdR;",
+ value: "U+02552"
+ },
+ {
+ entity: "boxdl;",
+ value: "U+02510"
+ },
+ {
+ entity: "boxdr;",
+ value: "U+0250C"
+ },
+ {
+ entity: "boxh;",
+ value: "U+02500"
+ },
+ {
+ entity: "boxhD;",
+ value: "U+02565"
+ },
+ {
+ entity: "boxhU;",
+ value: "U+02568"
+ },
+ {
+ entity: "boxhd;",
+ value: "U+0252C"
+ },
+ {
+ entity: "boxhu;",
+ value: "U+02534"
+ },
+ {
+ entity: "boxminus;",
+ value: "U+0229F"
+ },
+ {
+ entity: "boxplus;",
+ value: "U+0229E"
+ },
+ {
+ entity: "boxtimes;",
+ value: "U+022A0"
+ },
+ {
+ entity: "boxuL;",
+ value: "U+0255B"
+ },
+ {
+ entity: "boxuR;",
+ value: "U+02558"
+ },
+ {
+ entity: "boxul;",
+ value: "U+02518"
+ },
+ {
+ entity: "boxur;",
+ value: "U+02514"
+ },
+ {
+ entity: "boxv;",
+ value: "U+02502"
+ },
+ {
+ entity: "boxvH;",
+ value: "U+0256A"
+ },
+ {
+ entity: "boxvL;",
+ value: "U+02561"
+ },
+ {
+ entity: "boxvR;",
+ value: "U+0255E"
+ },
+ {
+ entity: "boxvh;",
+ value: "U+0253C"
+ },
+ {
+ entity: "boxvl;",
+ value: "U+02524"
+ },
+ {
+ entity: "boxvr;",
+ value: "U+0251C"
+ },
+ {
+ entity: "bprime;",
+ value: "U+02035"
+ },
+ {
+ entity: "breve;",
+ value: "U+002D8"
+ },
+ {
+ entity: "brvbar;",
+ value: "U+000A6"
+ },
+ {
+ entity: "brvbar",
+ value: "U+000A6"
+ },
+ {
+ entity: "bscr;",
+ value: "U+1D4B7"
+ },
+ {
+ entity: "bsemi;",
+ value: "U+0204F"
+ },
+ {
+ entity: "bsim;",
+ value: "U+0223D"
+ },
+ {
+ entity: "bsime;",
+ value: "U+022CD"
+ },
+ {
+ entity: "bsol;",
+ value: "U+0005C"
+ },
+ {
+ entity: "bsolb;",
+ value: "U+029C5"
+ },
+ {
+ entity: "bsolhsub;",
+ value: "U+027C8"
+ },
+ {
+ entity: "bull;",
+ value: "U+02022"
+ },
+ {
+ entity: "bullet;",
+ value: "U+02022"
+ },
+ {
+ entity: "bump;",
+ value: "U+0224E"
+ },
+ {
+ entity: "bumpE;",
+ value: "U+02AAE"
+ },
+ {
+ entity: "bumpe;",
+ value: "U+0224F"
+ },
+ {
+ entity: "bumpeq;",
+ value: "U+0224F"
+ },
+ {
+ entity: "cacute;",
+ value: "U+00107"
+ },
+ {
+ entity: "cap;",
+ value: "U+02229"
+ },
+ {
+ entity: "capand;",
+ value: "U+02A44"
+ },
+ {
+ entity: "capbrcup;",
+ value: "U+02A49"
+ },
+ {
+ entity: "capcap;",
+ value: "U+02A4B"
+ },
+ {
+ entity: "capcup;",
+ value: "U+02A47"
+ },
+ {
+ entity: "capdot;",
+ value: "U+02A40"
+ },
+ {
+ entity: "caret;",
+ value: "U+02041"
+ },
+ {
+ entity: "caron;",
+ value: "U+002C7"
+ },
+ {
+ entity: "ccaps;",
+ value: "U+02A4D"
+ },
+ {
+ entity: "ccaron;",
+ value: "U+0010D"
+ },
+ {
+ entity: "ccedil;",
+ value: "U+000E7"
+ },
+ {
+ entity: "ccedil",
+ value: "U+000E7"
+ },
+ {
+ entity: "ccirc;",
+ value: "U+00109"
+ },
+ {
+ entity: "ccups;",
+ value: "U+02A4C"
+ },
+ {
+ entity: "ccupssm;",
+ value: "U+02A50"
+ },
+ {
+ entity: "cdot;",
+ value: "U+0010B"
+ },
+ {
+ entity: "cedil;",
+ value: "U+000B8"
+ },
+ {
+ entity: "cedil",
+ value: "U+000B8"
+ },
+ {
+ entity: "cemptyv;",
+ value: "U+029B2"
+ },
+ {
+ entity: "cent;",
+ value: "U+000A2"
+ },
+ {
+ entity: "cent",
+ value: "U+000A2"
+ },
+ {
+ entity: "centerdot;",
+ value: "U+000B7"
+ },
+ {
+ entity: "cfr;",
+ value: "U+1D520"
+ },
+ {
+ entity: "chcy;",
+ value: "U+00447"
+ },
+ {
+ entity: "check;",
+ value: "U+02713"
+ },
+ {
+ entity: "checkmark;",
+ value: "U+02713"
+ },
+ {
+ entity: "chi;",
+ value: "U+003C7"
+ },
+ {
+ entity: "cir;",
+ value: "U+025CB"
+ },
+ {
+ entity: "cirE;",
+ value: "U+029C3"
+ },
+ {
+ entity: "circ;",
+ value: "U+002C6"
+ },
+ {
+ entity: "circeq;",
+ value: "U+02257"
+ },
+ {
+ entity: "circlearrowleft;",
+ value: "U+021BA"
+ },
+ {
+ entity: "circlearrowright;",
+ value: "U+021BB"
+ },
+ {
+ entity: "circledR;",
+ value: "U+000AE"
+ },
+ {
+ entity: "circledS;",
+ value: "U+024C8"
+ },
+ {
+ entity: "circledast;",
+ value: "U+0229B"
+ },
+ {
+ entity: "circledcirc;",
+ value: "U+0229A"
+ },
+ {
+ entity: "circleddash;",
+ value: "U+0229D"
+ },
+ {
+ entity: "cire;",
+ value: "U+02257"
+ },
+ {
+ entity: "cirfnint;",
+ value: "U+02A10"
+ },
+ {
+ entity: "cirmid;",
+ value: "U+02AEF"
+ },
+ {
+ entity: "cirscir;",
+ value: "U+029C2"
+ },
+ {
+ entity: "clubs;",
+ value: "U+02663"
+ },
+ {
+ entity: "clubsuit;",
+ value: "U+02663"
+ },
+ {
+ entity: "colon;",
+ value: "U+0003A"
+ },
+ {
+ entity: "colone;",
+ value: "U+02254"
+ },
+ {
+ entity: "coloneq;",
+ value: "U+02254"
+ },
+ {
+ entity: "comma;",
+ value: "U+0002C"
+ },
+ {
+ entity: "commat;",
+ value: "U+00040"
+ },
+ {
+ entity: "comp;",
+ value: "U+02201"
+ },
+ {
+ entity: "compfn;",
+ value: "U+02218"
+ },
+ {
+ entity: "complement;",
+ value: "U+02201"
+ },
+ {
+ entity: "complexes;",
+ value: "U+02102"
+ },
+ {
+ entity: "cong;",
+ value: "U+02245"
+ },
+ {
+ entity: "congdot;",
+ value: "U+02A6D"
+ },
+ {
+ entity: "conint;",
+ value: "U+0222E"
+ },
+ {
+ entity: "copf;",
+ value: "U+1D554"
+ },
+ {
+ entity: "coprod;",
+ value: "U+02210"
+ },
+ {
+ entity: "copy;",
+ value: "U+000A9"
+ },
+ {
+ entity: "copy",
+ value: "U+000A9"
+ },
+ {
+ entity: "copysr;",
+ value: "U+02117"
+ },
+ {
+ entity: "crarr;",
+ value: "U+021B5"
+ },
+ {
+ entity: "cross;",
+ value: "U+02717"
+ },
+ {
+ entity: "cscr;",
+ value: "U+1D4B8"
+ },
+ {
+ entity: "csub;",
+ value: "U+02ACF"
+ },
+ {
+ entity: "csube;",
+ value: "U+02AD1"
+ },
+ {
+ entity: "csup;",
+ value: "U+02AD0"
+ },
+ {
+ entity: "csupe;",
+ value: "U+02AD2"
+ },
+ {
+ entity: "ctdot;",
+ value: "U+022EF"
+ },
+ {
+ entity: "cudarrl;",
+ value: "U+02938"
+ },
+ {
+ entity: "cudarrr;",
+ value: "U+02935"
+ },
+ {
+ entity: "cuepr;",
+ value: "U+022DE"
+ },
+ {
+ entity: "cuesc;",
+ value: "U+022DF"
+ },
+ {
+ entity: "cularr;",
+ value: "U+021B6"
+ },
+ {
+ entity: "cularrp;",
+ value: "U+0293D"
+ },
+ {
+ entity: "cup;",
+ value: "U+0222A"
+ },
+ {
+ entity: "cupbrcap;",
+ value: "U+02A48"
+ },
+ {
+ entity: "cupcap;",
+ value: "U+02A46"
+ },
+ {
+ entity: "cupcup;",
+ value: "U+02A4A"
+ },
+ {
+ entity: "cupdot;",
+ value: "U+0228D"
+ },
+ {
+ entity: "cupor;",
+ value: "U+02A45"
+ },
+ {
+ entity: "curarr;",
+ value: "U+021B7"
+ },
+ {
+ entity: "curarrm;",
+ value: "U+0293C"
+ },
+ {
+ entity: "curlyeqprec;",
+ value: "U+022DE"
+ },
+ {
+ entity: "curlyeqsucc;",
+ value: "U+022DF"
+ },
+ {
+ entity: "curlyvee;",
+ value: "U+022CE"
+ },
+ {
+ entity: "curlywedge;",
+ value: "U+022CF"
+ },
+ {
+ entity: "curren;",
+ value: "U+000A4"
+ },
+ {
+ entity: "curren",
+ value: "U+000A4"
+ },
+ {
+ entity: "curvearrowleft;",
+ value: "U+021B6"
+ },
+ {
+ entity: "curvearrowright;",
+ value: "U+021B7"
+ },
+ {
+ entity: "cuvee;",
+ value: "U+022CE"
+ },
+ {
+ entity: "cuwed;",
+ value: "U+022CF"
+ },
+ {
+ entity: "cwconint;",
+ value: "U+02232"
+ },
+ {
+ entity: "cwint;",
+ value: "U+02231"
+ },
+ {
+ entity: "cylcty;",
+ value: "U+0232D"
+ },
+ {
+ entity: "dArr;",
+ value: "U+021D3"
+ },
+ {
+ entity: "dHar;",
+ value: "U+02965"
+ },
+ {
+ entity: "dagger;",
+ value: "U+02020"
+ },
+ {
+ entity: "daleth;",
+ value: "U+02138"
+ },
+ {
+ entity: "darr;",
+ value: "U+02193"
+ },
+ {
+ entity: "dash;",
+ value: "U+02010"
+ },
+ {
+ entity: "dashv;",
+ value: "U+022A3"
+ },
+ {
+ entity: "dbkarow;",
+ value: "U+0290F"
+ },
+ {
+ entity: "dblac;",
+ value: "U+002DD"
+ },
+ {
+ entity: "dcaron;",
+ value: "U+0010F"
+ },
+ {
+ entity: "dcy;",
+ value: "U+00434"
+ },
+ {
+ entity: "dd;",
+ value: "U+02146"
+ },
+ {
+ entity: "ddagger;",
+ value: "U+02021"
+ },
+ {
+ entity: "ddarr;",
+ value: "U+021CA"
+ },
+ {
+ entity: "ddotseq;",
+ value: "U+02A77"
+ },
+ {
+ entity: "deg;",
+ value: "U+000B0"
+ },
+ {
+ entity: "deg",
+ value: "U+000B0"
+ },
+ {
+ entity: "delta;",
+ value: "U+003B4"
+ },
+ {
+ entity: "demptyv;",
+ value: "U+029B1"
+ },
+ {
+ entity: "dfisht;",
+ value: "U+0297F"
+ },
+ {
+ entity: "dfr;",
+ value: "U+1D521"
+ },
+ {
+ entity: "dharl;",
+ value: "U+021C3"
+ },
+ {
+ entity: "dharr;",
+ value: "U+021C2"
+ },
+ {
+ entity: "diam;",
+ value: "U+022C4"
+ },
+ {
+ entity: "diamond;",
+ value: "U+022C4"
+ },
+ {
+ entity: "diamondsuit;",
+ value: "U+02666"
+ },
+ {
+ entity: "diams;",
+ value: "U+02666"
+ },
+ {
+ entity: "die;",
+ value: "U+000A8"
+ },
+ {
+ entity: "digamma;",
+ value: "U+003DD"
+ },
+ {
+ entity: "disin;",
+ value: "U+022F2"
+ },
+ {
+ entity: "div;",
+ value: "U+000F7"
+ },
+ {
+ entity: "divide;",
+ value: "U+000F7"
+ },
+ {
+ entity: "divide",
+ value: "U+000F7"
+ },
+ {
+ entity: "divideontimes;",
+ value: "U+022C7"
+ },
+ {
+ entity: "divonx;",
+ value: "U+022C7"
+ },
+ {
+ entity: "djcy;",
+ value: "U+00452"
+ },
+ {
+ entity: "dlcorn;",
+ value: "U+0231E"
+ },
+ {
+ entity: "dlcrop;",
+ value: "U+0230D"
+ },
+ {
+ entity: "dollar;",
+ value: "U+00024"
+ },
+ {
+ entity: "dopf;",
+ value: "U+1D555"
+ },
+ {
+ entity: "dot;",
+ value: "U+002D9"
+ },
+ {
+ entity: "doteq;",
+ value: "U+02250"
+ },
+ {
+ entity: "doteqdot;",
+ value: "U+02251"
+ },
+ {
+ entity: "dotminus;",
+ value: "U+02238"
+ },
+ {
+ entity: "dotplus;",
+ value: "U+02214"
+ },
+ {
+ entity: "dotsquare;",
+ value: "U+022A1"
+ },
+ {
+ entity: "doublebarwedge;",
+ value: "U+02306"
+ },
+ {
+ entity: "downarrow;",
+ value: "U+02193"
+ },
+ {
+ entity: "downdownarrows;",
+ value: "U+021CA"
+ },
+ {
+ entity: "downharpoonleft;",
+ value: "U+021C3"
+ },
+ {
+ entity: "downharpoonright;",
+ value: "U+021C2"
+ },
+ {
+ entity: "drbkarow;",
+ value: "U+02910"
+ },
+ {
+ entity: "drcorn;",
+ value: "U+0231F"
+ },
+ {
+ entity: "drcrop;",
+ value: "U+0230C"
+ },
+ {
+ entity: "dscr;",
+ value: "U+1D4B9"
+ },
+ {
+ entity: "dscy;",
+ value: "U+00455"
+ },
+ {
+ entity: "dsol;",
+ value: "U+029F6"
+ },
+ {
+ entity: "dstrok;",
+ value: "U+00111"
+ },
+ {
+ entity: "dtdot;",
+ value: "U+022F1"
+ },
+ {
+ entity: "dtri;",
+ value: "U+025BF"
+ },
+ {
+ entity: "dtrif;",
+ value: "U+025BE"
+ },
+ {
+ entity: "duarr;",
+ value: "U+021F5"
+ },
+ {
+ entity: "duhar;",
+ value: "U+0296F"
+ },
+ {
+ entity: "dwangle;",
+ value: "U+029A6"
+ },
+ {
+ entity: "dzcy;",
+ value: "U+0045F"
+ },
+ {
+ entity: "dzigrarr;",
+ value: "U+027FF"
+ },
+ {
+ entity: "eDDot;",
+ value: "U+02A77"
+ },
+ {
+ entity: "eDot;",
+ value: "U+02251"
+ },
+ {
+ entity: "eacute;",
+ value: "U+000E9"
+ },
+ {
+ entity: "eacute",
+ value: "U+000E9"
+ },
+ {
+ entity: "easter;",
+ value: "U+02A6E"
+ },
+ {
+ entity: "ecaron;",
+ value: "U+0011B"
+ },
+ {
+ entity: "ecir;",
+ value: "U+02256"
+ },
+ {
+ entity: "ecirc;",
+ value: "U+000EA"
+ },
+ {
+ entity: "ecirc",
+ value: "U+000EA"
+ },
+ {
+ entity: "ecolon;",
+ value: "U+02255"
+ },
+ {
+ entity: "ecy;",
+ value: "U+0044D"
+ },
+ {
+ entity: "edot;",
+ value: "U+00117"
+ },
+ {
+ entity: "ee;",
+ value: "U+02147"
+ },
+ {
+ entity: "efDot;",
+ value: "U+02252"
+ },
+ {
+ entity: "efr;",
+ value: "U+1D522"
+ },
+ {
+ entity: "eg;",
+ value: "U+02A9A"
+ },
+ {
+ entity: "egrave;",
+ value: "U+000E8"
+ },
+ {
+ entity: "egrave",
+ value: "U+000E8"
+ },
+ {
+ entity: "egs;",
+ value: "U+02A96"
+ },
+ {
+ entity: "egsdot;",
+ value: "U+02A98"
+ },
+ {
+ entity: "el;",
+ value: "U+02A99"
+ },
+ {
+ entity: "elinters;",
+ value: "U+023E7"
+ },
+ {
+ entity: "ell;",
+ value: "U+02113"
+ },
+ {
+ entity: "els;",
+ value: "U+02A95"
+ },
+ {
+ entity: "elsdot;",
+ value: "U+02A97"
+ },
+ {
+ entity: "emacr;",
+ value: "U+00113"
+ },
+ {
+ entity: "empty;",
+ value: "U+02205"
+ },
+ {
+ entity: "emptyset;",
+ value: "U+02205"
+ },
+ {
+ entity: "emptyv;",
+ value: "U+02205"
+ },
+ {
+ entity: "emsp13;",
+ value: "U+02004"
+ },
+ {
+ entity: "emsp14;",
+ value: "U+02005"
+ },
+ {
+ entity: "emsp;",
+ value: "U+02003"
+ },
+ {
+ entity: "eng;",
+ value: "U+0014B"
+ },
+ {
+ entity: "ensp;",
+ value: "U+02002"
+ },
+ {
+ entity: "eogon;",
+ value: "U+00119"
+ },
+ {
+ entity: "eopf;",
+ value: "U+1D556"
+ },
+ {
+ entity: "epar;",
+ value: "U+022D5"
+ },
+ {
+ entity: "eparsl;",
+ value: "U+029E3"
+ },
+ {
+ entity: "eplus;",
+ value: "U+02A71"
+ },
+ {
+ entity: "epsi;",
+ value: "U+003B5"
+ },
+ {
+ entity: "epsilon;",
+ value: "U+003B5"
+ },
+ {
+ entity: "epsiv;",
+ value: "U+003F5"
+ },
+ {
+ entity: "eqcirc;",
+ value: "U+02256"
+ },
+ {
+ entity: "eqcolon;",
+ value: "U+02255"
+ },
+ {
+ entity: "eqsim;",
+ value: "U+02242"
+ },
+ {
+ entity: "eqslantgtr;",
+ value: "U+02A96"
+ },
+ {
+ entity: "eqslantless;",
+ value: "U+02A95"
+ },
+ {
+ entity: "equals;",
+ value: "U+0003D"
+ },
+ {
+ entity: "equest;",
+ value: "U+0225F"
+ },
+ {
+ entity: "equiv;",
+ value: "U+02261"
+ },
+ {
+ entity: "equivDD;",
+ value: "U+02A78"
+ },
+ {
+ entity: "eqvparsl;",
+ value: "U+029E5"
+ },
+ {
+ entity: "erDot;",
+ value: "U+02253"
+ },
+ {
+ entity: "erarr;",
+ value: "U+02971"
+ },
+ {
+ entity: "escr;",
+ value: "U+0212F"
+ },
+ {
+ entity: "esdot;",
+ value: "U+02250"
+ },
+ {
+ entity: "esim;",
+ value: "U+02242"
+ },
+ {
+ entity: "eta;",
+ value: "U+003B7"
+ },
+ {
+ entity: "eth;",
+ value: "U+000F0"
+ },
+ {
+ entity: "eth",
+ value: "U+000F0"
+ },
+ {
+ entity: "euml;",
+ value: "U+000EB"
+ },
+ {
+ entity: "euml",
+ value: "U+000EB"
+ },
+ {
+ entity: "euro;",
+ value: "U+020AC"
+ },
+ {
+ entity: "excl;",
+ value: "U+00021"
+ },
+ {
+ entity: "exist;",
+ value: "U+02203"
+ },
+ {
+ entity: "expectation;",
+ value: "U+02130"
+ },
+ {
+ entity: "exponentiale;",
+ value: "U+02147"
+ },
+ {
+ entity: "fallingdotseq;",
+ value: "U+02252"
+ },
+ {
+ entity: "fcy;",
+ value: "U+00444"
+ },
+ {
+ entity: "female;",
+ value: "U+02640"
+ },
+ {
+ entity: "ffilig;",
+ value: "U+0FB03"
+ },
+ {
+ entity: "fflig;",
+ value: "U+0FB00"
+ },
+ {
+ entity: "ffllig;",
+ value: "U+0FB04"
+ },
+ {
+ entity: "ffr;",
+ value: "U+1D523"
+ },
+ {
+ entity: "filig;",
+ value: "U+0FB01"
+ },
+ {
+ entity: "flat;",
+ value: "U+0266D"
+ },
+ {
+ entity: "fllig;",
+ value: "U+0FB02"
+ },
+ {
+ entity: "fltns;",
+ value: "U+025B1"
+ },
+ {
+ entity: "fnof;",
+ value: "U+00192"
+ },
+ {
+ entity: "fopf;",
+ value: "U+1D557"
+ },
+ {
+ entity: "forall;",
+ value: "U+02200"
+ },
+ {
+ entity: "fork;",
+ value: "U+022D4"
+ },
+ {
+ entity: "forkv;",
+ value: "U+02AD9"
+ },
+ {
+ entity: "fpartint;",
+ value: "U+02A0D"
+ },
+ {
+ entity: "frac12;",
+ value: "U+000BD"
+ },
+ {
+ entity: "frac12",
+ value: "U+000BD"
+ },
+ {
+ entity: "frac13;",
+ value: "U+02153"
+ },
+ {
+ entity: "frac14;",
+ value: "U+000BC"
+ },
+ {
+ entity: "frac14",
+ value: "U+000BC"
+ },
+ {
+ entity: "frac15;",
+ value: "U+02155"
+ },
+ {
+ entity: "frac16;",
+ value: "U+02159"
+ },
+ {
+ entity: "frac18;",
+ value: "U+0215B"
+ },
+ {
+ entity: "frac23;",
+ value: "U+02154"
+ },
+ {
+ entity: "frac25;",
+ value: "U+02156"
+ },
+ {
+ entity: "frac34;",
+ value: "U+000BE"
+ },
+ {
+ entity: "frac34",
+ value: "U+000BE"
+ },
+ {
+ entity: "frac35;",
+ value: "U+02157"
+ },
+ {
+ entity: "frac38;",
+ value: "U+0215C"
+ },
+ {
+ entity: "frac45;",
+ value: "U+02158"
+ },
+ {
+ entity: "frac56;",
+ value: "U+0215A"
+ },
+ {
+ entity: "frac58;",
+ value: "U+0215D"
+ },
+ {
+ entity: "frac78;",
+ value: "U+0215E"
+ },
+ {
+ entity: "frasl;",
+ value: "U+02044"
+ },
+ {
+ entity: "frown;",
+ value: "U+02322"
+ },
+ {
+ entity: "fscr;",
+ value: "U+1D4BB"
+ },
+ {
+ entity: "gE;",
+ value: "U+02267"
+ },
+ {
+ entity: "gEl;",
+ value: "U+02A8C"
+ },
+ {
+ entity: "gacute;",
+ value: "U+001F5"
+ },
+ {
+ entity: "gamma;",
+ value: "U+003B3"
+ },
+ {
+ entity: "gammad;",
+ value: "U+003DD"
+ },
+ {
+ entity: "gap;",
+ value: "U+02A86"
+ },
+ {
+ entity: "gbreve;",
+ value: "U+0011F"
+ },
+ {
+ entity: "gcirc;",
+ value: "U+0011D"
+ },
+ {
+ entity: "gcy;",
+ value: "U+00433"
+ },
+ {
+ entity: "gdot;",
+ value: "U+00121"
+ },
+ {
+ entity: "ge;",
+ value: "U+02265"
+ },
+ {
+ entity: "gel;",
+ value: "U+022DB"
+ },
+ {
+ entity: "geq;",
+ value: "U+02265"
+ },
+ {
+ entity: "geqq;",
+ value: "U+02267"
+ },
+ {
+ entity: "geqslant;",
+ value: "U+02A7E"
+ },
+ {
+ entity: "ges;",
+ value: "U+02A7E"
+ },
+ {
+ entity: "gescc;",
+ value: "U+02AA9"
+ },
+ {
+ entity: "gesdot;",
+ value: "U+02A80"
+ },
+ {
+ entity: "gesdoto;",
+ value: "U+02A82"
+ },
+ {
+ entity: "gesdotol;",
+ value: "U+02A84"
+ },
+ {
+ entity: "gesles;",
+ value: "U+02A94"
+ },
+ {
+ entity: "gfr;",
+ value: "U+1D524"
+ },
+ {
+ entity: "gg;",
+ value: "U+0226B"
+ },
+ {
+ entity: "ggg;",
+ value: "U+022D9"
+ },
+ {
+ entity: "gimel;",
+ value: "U+02137"
+ },
+ {
+ entity: "gjcy;",
+ value: "U+00453"
+ },
+ {
+ entity: "gl;",
+ value: "U+02277"
+ },
+ {
+ entity: "glE;",
+ value: "U+02A92"
+ },
+ {
+ entity: "gla;",
+ value: "U+02AA5"
+ },
+ {
+ entity: "glj;",
+ value: "U+02AA4"
+ },
+ {
+ entity: "gnE;",
+ value: "U+02269"
+ },
+ {
+ entity: "gnap;",
+ value: "U+02A8A"
+ },
+ {
+ entity: "gnapprox;",
+ value: "U+02A8A"
+ },
+ {
+ entity: "gne;",
+ value: "U+02A88"
+ },
+ {
+ entity: "gneq;",
+ value: "U+02A88"
+ },
+ {
+ entity: "gneqq;",
+ value: "U+02269"
+ },
+ {
+ entity: "gnsim;",
+ value: "U+022E7"
+ },
+ {
+ entity: "gopf;",
+ value: "U+1D558"
+ },
+ {
+ entity: "grave;",
+ value: "U+00060"
+ },
+ {
+ entity: "gscr;",
+ value: "U+0210A"
+ },
+ {
+ entity: "gsim;",
+ value: "U+02273"
+ },
+ {
+ entity: "gsime;",
+ value: "U+02A8E"
+ },
+ {
+ entity: "gsiml;",
+ value: "U+02A90"
+ },
+ {
+ entity: "gt;",
+ value: "U+0003E"
+ },
+ {
+ entity: "gt",
+ value: "U+0003E"
+ },
+ {
+ entity: "gtcc;",
+ value: "U+02AA7"
+ },
+ {
+ entity: "gtcir;",
+ value: "U+02A7A"
+ },
+ {
+ entity: "gtdot;",
+ value: "U+022D7"
+ },
+ {
+ entity: "gtlPar;",
+ value: "U+02995"
+ },
+ {
+ entity: "gtquest;",
+ value: "U+02A7C"
+ },
+ {
+ entity: "gtrapprox;",
+ value: "U+02A86"
+ },
+ {
+ entity: "gtrarr;",
+ value: "U+02978"
+ },
+ {
+ entity: "gtrdot;",
+ value: "U+022D7"
+ },
+ {
+ entity: "gtreqless;",
+ value: "U+022DB"
+ },
+ {
+ entity: "gtreqqless;",
+ value: "U+02A8C"
+ },
+ {
+ entity: "gtrless;",
+ value: "U+02277"
+ },
+ {
+ entity: "gtrsim;",
+ value: "U+02273"
+ },
+ {
+ entity: "hArr;",
+ value: "U+021D4"
+ },
+ {
+ entity: "hairsp;",
+ value: "U+0200A"
+ },
+ {
+ entity: "half;",
+ value: "U+000BD"
+ },
+ {
+ entity: "hamilt;",
+ value: "U+0210B"
+ },
+ {
+ entity: "hardcy;",
+ value: "U+0044A"
+ },
+ {
+ entity: "harr;",
+ value: "U+02194"
+ },
+ {
+ entity: "harrcir;",
+ value: "U+02948"
+ },
+ {
+ entity: "harrw;",
+ value: "U+021AD"
+ },
+ {
+ entity: "hbar;",
+ value: "U+0210F"
+ },
+ {
+ entity: "hcirc;",
+ value: "U+00125"
+ },
+ {
+ entity: "hearts;",
+ value: "U+02665"
+ },
+ {
+ entity: "heartsuit;",
+ value: "U+02665"
+ },
+ {
+ entity: "hellip;",
+ value: "U+02026"
+ },
+ {
+ entity: "hercon;",
+ value: "U+022B9"
+ },
+ {
+ entity: "hfr;",
+ value: "U+1D525"
+ },
+ {
+ entity: "hksearow;",
+ value: "U+02925"
+ },
+ {
+ entity: "hkswarow;",
+ value: "U+02926"
+ },
+ {
+ entity: "hoarr;",
+ value: "U+021FF"
+ },
+ {
+ entity: "homtht;",
+ value: "U+0223B"
+ },
+ {
+ entity: "hookleftarrow;",
+ value: "U+021A9"
+ },
+ {
+ entity: "hookrightarrow;",
+ value: "U+021AA"
+ },
+ {
+ entity: "hopf;",
+ value: "U+1D559"
+ },
+ {
+ entity: "horbar;",
+ value: "U+02015"
+ },
+ {
+ entity: "hscr;",
+ value: "U+1D4BD"
+ },
+ {
+ entity: "hslash;",
+ value: "U+0210F"
+ },
+ {
+ entity: "hstrok;",
+ value: "U+00127"
+ },
+ {
+ entity: "hybull;",
+ value: "U+02043"
+ },
+ {
+ entity: "hyphen;",
+ value: "U+02010"
+ },
+ {
+ entity: "iacute;",
+ value: "U+000ED"
+ },
+ {
+ entity: "iacute",
+ value: "U+000ED"
+ },
+ {
+ entity: "ic;",
+ value: "U+02063"
+ },
+ {
+ entity: "icirc;",
+ value: "U+000EE"
+ },
+ {
+ entity: "icirc",
+ value: "U+000EE"
+ },
+ {
+ entity: "icy;",
+ value: "U+00438"
+ },
+ {
+ entity: "iecy;",
+ value: "U+00435"
+ },
+ {
+ entity: "iexcl;",
+ value: "U+000A1"
+ },
+ {
+ entity: "iexcl",
+ value: "U+000A1"
+ },
+ {
+ entity: "iff;",
+ value: "U+021D4"
+ },
+ {
+ entity: "ifr;",
+ value: "U+1D526"
+ },
+ {
+ entity: "igrave;",
+ value: "U+000EC"
+ },
+ {
+ entity: "igrave",
+ value: "U+000EC"
+ },
+ {
+ entity: "ii;",
+ value: "U+02148"
+ },
+ {
+ entity: "iiiint;",
+ value: "U+02A0C"
+ },
+ {
+ entity: "iiint;",
+ value: "U+0222D"
+ },
+ {
+ entity: "iinfin;",
+ value: "U+029DC"
+ },
+ {
+ entity: "iiota;",
+ value: "U+02129"
+ },
+ {
+ entity: "ijlig;",
+ value: "U+00133"
+ },
+ {
+ entity: "imacr;",
+ value: "U+0012B"
+ },
+ {
+ entity: "image;",
+ value: "U+02111"
+ },
+ {
+ entity: "imagline;",
+ value: "U+02110"
+ },
+ {
+ entity: "imagpart;",
+ value: "U+02111"
+ },
+ {
+ entity: "imath;",
+ value: "U+00131"
+ },
+ {
+ entity: "imof;",
+ value: "U+022B7"
+ },
+ {
+ entity: "imped;",
+ value: "U+001B5"
+ },
+ {
+ entity: "in;",
+ value: "U+02208"
+ },
+ {
+ entity: "incare;",
+ value: "U+02105"
+ },
+ {
+ entity: "infin;",
+ value: "U+0221E"
+ },
+ {
+ entity: "infintie;",
+ value: "U+029DD"
+ },
+ {
+ entity: "inodot;",
+ value: "U+00131"
+ },
+ {
+ entity: "int;",
+ value: "U+0222B"
+ },
+ {
+ entity: "intcal;",
+ value: "U+022BA"
+ },
+ {
+ entity: "integers;",
+ value: "U+02124"
+ },
+ {
+ entity: "intercal;",
+ value: "U+022BA"
+ },
+ {
+ entity: "intlarhk;",
+ value: "U+02A17"
+ },
+ {
+ entity: "intprod;",
+ value: "U+02A3C"
+ },
+ {
+ entity: "iocy;",
+ value: "U+00451"
+ },
+ {
+ entity: "iogon;",
+ value: "U+0012F"
+ },
+ {
+ entity: "iopf;",
+ value: "U+1D55A"
+ },
+ {
+ entity: "iota;",
+ value: "U+003B9"
+ },
+ {
+ entity: "iprod;",
+ value: "U+02A3C"
+ },
+ {
+ entity: "iquest;",
+ value: "U+000BF"
+ },
+ {
+ entity: "iquest",
+ value: "U+000BF"
+ },
+ {
+ entity: "iscr;",
+ value: "U+1D4BE"
+ },
+ {
+ entity: "isin;",
+ value: "U+02208"
+ },
+ {
+ entity: "isinE;",
+ value: "U+022F9"
+ },
+ {
+ entity: "isindot;",
+ value: "U+022F5"
+ },
+ {
+ entity: "isins;",
+ value: "U+022F4"
+ },
+ {
+ entity: "isinsv;",
+ value: "U+022F3"
+ },
+ {
+ entity: "isinv;",
+ value: "U+02208"
+ },
+ {
+ entity: "it;",
+ value: "U+02062"
+ },
+ {
+ entity: "itilde;",
+ value: "U+00129"
+ },
+ {
+ entity: "iukcy;",
+ value: "U+00456"
+ },
+ {
+ entity: "iuml;",
+ value: "U+000EF"
+ },
+ {
+ entity: "iuml",
+ value: "U+000EF"
+ },
+ {
+ entity: "jcirc;",
+ value: "U+00135"
+ },
+ {
+ entity: "jcy;",
+ value: "U+00439"
+ },
+ {
+ entity: "jfr;",
+ value: "U+1D527"
+ },
+ {
+ entity: "jmath;",
+ value: "U+00237"
+ },
+ {
+ entity: "jopf;",
+ value: "U+1D55B"
+ },
+ {
+ entity: "jscr;",
+ value: "U+1D4BF"
+ },
+ {
+ entity: "jsercy;",
+ value: "U+00458"
+ },
+ {
+ entity: "jukcy;",
+ value: "U+00454"
+ },
+ {
+ entity: "kappa;",
+ value: "U+003BA"
+ },
+ {
+ entity: "kappav;",
+ value: "U+003F0"
+ },
+ {
+ entity: "kcedil;",
+ value: "U+00137"
+ },
+ {
+ entity: "kcy;",
+ value: "U+0043A"
+ },
+ {
+ entity: "kfr;",
+ value: "U+1D528"
+ },
+ {
+ entity: "kgreen;",
+ value: "U+00138"
+ },
+ {
+ entity: "khcy;",
+ value: "U+00445"
+ },
+ {
+ entity: "kjcy;",
+ value: "U+0045C"
+ },
+ {
+ entity: "kopf;",
+ value: "U+1D55C"
+ },
+ {
+ entity: "kscr;",
+ value: "U+1D4C0"
+ },
+ {
+ entity: "lAarr;",
+ value: "U+021DA"
+ },
+ {
+ entity: "lArr;",
+ value: "U+021D0"
+ },
+ {
+ entity: "lAtail;",
+ value: "U+0291B"
+ },
+ {
+ entity: "lBarr;",
+ value: "U+0290E"
+ },
+ {
+ entity: "lE;",
+ value: "U+02266"
+ },
+ {
+ entity: "lEg;",
+ value: "U+02A8B"
+ },
+ {
+ entity: "lHar;",
+ value: "U+02962"
+ },
+ {
+ entity: "lacute;",
+ value: "U+0013A"
+ },
+ {
+ entity: "laemptyv;",
+ value: "U+029B4"
+ },
+ {
+ entity: "lagran;",
+ value: "U+02112"
+ },
+ {
+ entity: "lambda;",
+ value: "U+003BB"
+ },
+ {
+ entity: "lang;",
+ value: "U+027E8"
+ },
+ {
+ entity: "langd;",
+ value: "U+02991"
+ },
+ {
+ entity: "langle;",
+ value: "U+027E8"
+ },
+ {
+ entity: "lap;",
+ value: "U+02A85"
+ },
+ {
+ entity: "laquo;",
+ value: "U+000AB"
+ },
+ {
+ entity: "laquo",
+ value: "U+000AB"
+ },
+ {
+ entity: "larr;",
+ value: "U+02190"
+ },
+ {
+ entity: "larrb;",
+ value: "U+021E4"
+ },
+ {
+ entity: "larrbfs;",
+ value: "U+0291F"
+ },
+ {
+ entity: "larrfs;",
+ value: "U+0291D"
+ },
+ {
+ entity: "larrhk;",
+ value: "U+021A9"
+ },
+ {
+ entity: "larrlp;",
+ value: "U+021AB"
+ },
+ {
+ entity: "larrpl;",
+ value: "U+02939"
+ },
+ {
+ entity: "larrsim;",
+ value: "U+02973"
+ },
+ {
+ entity: "larrtl;",
+ value: "U+021A2"
+ },
+ {
+ entity: "lat;",
+ value: "U+02AAB"
+ },
+ {
+ entity: "latail;",
+ value: "U+02919"
+ },
+ {
+ entity: "late;",
+ value: "U+02AAD"
+ },
+ {
+ entity: "lbarr;",
+ value: "U+0290C"
+ },
+ {
+ entity: "lbbrk;",
+ value: "U+02772"
+ },
+ {
+ entity: "lbrace;",
+ value: "U+0007B"
+ },
+ {
+ entity: "lbrack;",
+ value: "U+0005B"
+ },
+ {
+ entity: "lbrke;",
+ value: "U+0298B"
+ },
+ {
+ entity: "lbrksld;",
+ value: "U+0298F"
+ },
+ {
+ entity: "lbrkslu;",
+ value: "U+0298D"
+ },
+ {
+ entity: "lcaron;",
+ value: "U+0013E"
+ },
+ {
+ entity: "lcedil;",
+ value: "U+0013C"
+ },
+ {
+ entity: "lceil;",
+ value: "U+02308"
+ },
+ {
+ entity: "lcub;",
+ value: "U+0007B"
+ },
+ {
+ entity: "lcy;",
+ value: "U+0043B"
+ },
+ {
+ entity: "ldca;",
+ value: "U+02936"
+ },
+ {
+ entity: "ldquo;",
+ value: "U+0201C"
+ },
+ {
+ entity: "ldquor;",
+ value: "U+0201E"
+ },
+ {
+ entity: "ldrdhar;",
+ value: "U+02967"
+ },
+ {
+ entity: "ldrushar;",
+ value: "U+0294B"
+ },
+ {
+ entity: "ldsh;",
+ value: "U+021B2"
+ },
+ {
+ entity: "le;",
+ value: "U+02264"
+ },
+ {
+ entity: "leftarrow;",
+ value: "U+02190"
+ },
+ {
+ entity: "leftarrowtail;",
+ value: "U+021A2"
+ },
+ {
+ entity: "leftharpoondown;",
+ value: "U+021BD"
+ },
+ {
+ entity: "leftharpoonup;",
+ value: "U+021BC"
+ },
+ {
+ entity: "leftleftarrows;",
+ value: "U+021C7"
+ },
+ {
+ entity: "leftrightarrow;",
+ value: "U+02194"
+ },
+ {
+ entity: "leftrightarrows;",
+ value: "U+021C6"
+ },
+ {
+ entity: "leftrightharpoons;",
+ value: "U+021CB"
+ },
+ {
+ entity: "leftrightsquigarrow;",
+ value: "U+021AD"
+ },
+ {
+ entity: "leftthreetimes;",
+ value: "U+022CB"
+ },
+ {
+ entity: "leg;",
+ value: "U+022DA"
+ },
+ {
+ entity: "leq;",
+ value: "U+02264"
+ },
+ {
+ entity: "leqq;",
+ value: "U+02266"
+ },
+ {
+ entity: "leqslant;",
+ value: "U+02A7D"
+ },
+ {
+ entity: "les;",
+ value: "U+02A7D"
+ },
+ {
+ entity: "lescc;",
+ value: "U+02AA8"
+ },
+ {
+ entity: "lesdot;",
+ value: "U+02A7F"
+ },
+ {
+ entity: "lesdoto;",
+ value: "U+02A81"
+ },
+ {
+ entity: "lesdotor;",
+ value: "U+02A83"
+ },
+ {
+ entity: "lesges;",
+ value: "U+02A93"
+ },
+ {
+ entity: "lessapprox;",
+ value: "U+02A85"
+ },
+ {
+ entity: "lessdot;",
+ value: "U+022D6"
+ },
+ {
+ entity: "lesseqgtr;",
+ value: "U+022DA"
+ },
+ {
+ entity: "lesseqqgtr;",
+ value: "U+02A8B"
+ },
+ {
+ entity: "lessgtr;",
+ value: "U+02276"
+ },
+ {
+ entity: "lesssim;",
+ value: "U+02272"
+ },
+ {
+ entity: "lfisht;",
+ value: "U+0297C"
+ },
+ {
+ entity: "lfloor;",
+ value: "U+0230A"
+ },
+ {
+ entity: "lfr;",
+ value: "U+1D529"
+ },
+ {
+ entity: "lg;",
+ value: "U+02276"
+ },
+ {
+ entity: "lgE;",
+ value: "U+02A91"
+ },
+ {
+ entity: "lhard;",
+ value: "U+021BD"
+ },
+ {
+ entity: "lharu;",
+ value: "U+021BC"
+ },
+ {
+ entity: "lharul;",
+ value: "U+0296A"
+ },
+ {
+ entity: "lhblk;",
+ value: "U+02584"
+ },
+ {
+ entity: "ljcy;",
+ value: "U+00459"
+ },
+ {
+ entity: "ll;",
+ value: "U+0226A"
+ },
+ {
+ entity: "llarr;",
+ value: "U+021C7"
+ },
+ {
+ entity: "llcorner;",
+ value: "U+0231E"
+ },
+ {
+ entity: "llhard;",
+ value: "U+0296B"
+ },
+ {
+ entity: "lltri;",
+ value: "U+025FA"
+ },
+ {
+ entity: "lmidot;",
+ value: "U+00140"
+ },
+ {
+ entity: "lmoust;",
+ value: "U+023B0"
+ },
+ {
+ entity: "lmoustache;",
+ value: "U+023B0"
+ },
+ {
+ entity: "lnE;",
+ value: "U+02268"
+ },
+ {
+ entity: "lnap;",
+ value: "U+02A89"
+ },
+ {
+ entity: "lnapprox;",
+ value: "U+02A89"
+ },
+ {
+ entity: "lne;",
+ value: "U+02A87"
+ },
+ {
+ entity: "lneq;",
+ value: "U+02A87"
+ },
+ {
+ entity: "lneqq;",
+ value: "U+02268"
+ },
+ {
+ entity: "lnsim;",
+ value: "U+022E6"
+ },
+ {
+ entity: "loang;",
+ value: "U+027EC"
+ },
+ {
+ entity: "loarr;",
+ value: "U+021FD"
+ },
+ {
+ entity: "lobrk;",
+ value: "U+027E6"
+ },
+ {
+ entity: "longleftarrow;",
+ value: "U+027F5"
+ },
+ {
+ entity: "longleftrightarrow;",
+ value: "U+027F7"
+ },
+ {
+ entity: "longmapsto;",
+ value: "U+027FC"
+ },
+ {
+ entity: "longrightarrow;",
+ value: "U+027F6"
+ },
+ {
+ entity: "looparrowleft;",
+ value: "U+021AB"
+ },
+ {
+ entity: "looparrowright;",
+ value: "U+021AC"
+ },
+ {
+ entity: "lopar;",
+ value: "U+02985"
+ },
+ {
+ entity: "lopf;",
+ value: "U+1D55D"
+ },
+ {
+ entity: "loplus;",
+ value: "U+02A2D"
+ },
+ {
+ entity: "lotimes;",
+ value: "U+02A34"
+ },
+ {
+ entity: "lowast;",
+ value: "U+02217"
+ },
+ {
+ entity: "lowbar;",
+ value: "U+0005F"
+ },
+ {
+ entity: "loz;",
+ value: "U+025CA"
+ },
+ {
+ entity: "lozenge;",
+ value: "U+025CA"
+ },
+ {
+ entity: "lozf;",
+ value: "U+029EB"
+ },
+ {
+ entity: "lpar;",
+ value: "U+00028"
+ },
+ {
+ entity: "lparlt;",
+ value: "U+02993"
+ },
+ {
+ entity: "lrarr;",
+ value: "U+021C6"
+ },
+ {
+ entity: "lrcorner;",
+ value: "U+0231F"
+ },
+ {
+ entity: "lrhar;",
+ value: "U+021CB"
+ },
+ {
+ entity: "lrhard;",
+ value: "U+0296D"
+ },
+ {
+ entity: "lrm;",
+ value: "U+0200E"
+ },
+ {
+ entity: "lrtri;",
+ value: "U+022BF"
+ },
+ {
+ entity: "lsaquo;",
+ value: "U+02039"
+ },
+ {
+ entity: "lscr;",
+ value: "U+1D4C1"
+ },
+ {
+ entity: "lsh;",
+ value: "U+021B0"
+ },
+ {
+ entity: "lsim;",
+ value: "U+02272"
+ },
+ {
+ entity: "lsime;",
+ value: "U+02A8D"
+ },
+ {
+ entity: "lsimg;",
+ value: "U+02A8F"
+ },
+ {
+ entity: "lsqb;",
+ value: "U+0005B"
+ },
+ {
+ entity: "lsquo;",
+ value: "U+02018"
+ },
+ {
+ entity: "lsquor;",
+ value: "U+0201A"
+ },
+ {
+ entity: "lstrok;",
+ value: "U+00142"
+ },
+ {
+ entity: "lt;",
+ value: "U+0003C"
+ },
+ {
+ entity: "lt",
+ value: "U+0003C"
+ },
+ {
+ entity: "ltcc;",
+ value: "U+02AA6"
+ },
+ {
+ entity: "ltcir;",
+ value: "U+02A79"
+ },
+ {
+ entity: "ltdot;",
+ value: "U+022D6"
+ },
+ {
+ entity: "lthree;",
+ value: "U+022CB"
+ },
+ {
+ entity: "ltimes;",
+ value: "U+022C9"
+ },
+ {
+ entity: "ltlarr;",
+ value: "U+02976"
+ },
+ {
+ entity: "ltquest;",
+ value: "U+02A7B"
+ },
+ {
+ entity: "ltrPar;",
+ value: "U+02996"
+ },
+ {
+ entity: "ltri;",
+ value: "U+025C3"
+ },
+ {
+ entity: "ltrie;",
+ value: "U+022B4"
+ },
+ {
+ entity: "ltrif;",
+ value: "U+025C2"
+ },
+ {
+ entity: "lurdshar;",
+ value: "U+0294A"
+ },
+ {
+ entity: "luruhar;",
+ value: "U+02966"
+ },
+ {
+ entity: "mDDot;",
+ value: "U+0223A"
+ },
+ {
+ entity: "macr;",
+ value: "U+000AF"
+ },
+ {
+ entity: "macr",
+ value: "U+000AF"
+ },
+ {
+ entity: "male;",
+ value: "U+02642"
+ },
+ {
+ entity: "malt;",
+ value: "U+02720"
+ },
+ {
+ entity: "maltese;",
+ value: "U+02720"
+ },
+ {
+ entity: "map;",
+ value: "U+021A6"
+ },
+ {
+ entity: "mapsto;",
+ value: "U+021A6"
+ },
+ {
+ entity: "mapstodown;",
+ value: "U+021A7"
+ },
+ {
+ entity: "mapstoleft;",
+ value: "U+021A4"
+ },
+ {
+ entity: "mapstoup;",
+ value: "U+021A5"
+ },
+ {
+ entity: "marker;",
+ value: "U+025AE"
+ },
+ {
+ entity: "mcomma;",
+ value: "U+02A29"
+ },
+ {
+ entity: "mcy;",
+ value: "U+0043C"
+ },
+ {
+ entity: "mdash;",
+ value: "U+02014"
+ },
+ {
+ entity: "measuredangle;",
+ value: "U+02221"
+ },
+ {
+ entity: "mfr;",
+ value: "U+1D52A"
+ },
+ {
+ entity: "mho;",
+ value: "U+02127"
+ },
+ {
+ entity: "micro;",
+ value: "U+000B5"
+ },
+ {
+ entity: "micro",
+ value: "U+000B5"
+ },
+ {
+ entity: "mid;",
+ value: "U+02223"
+ },
+ {
+ entity: "midast;",
+ value: "U+0002A"
+ },
+ {
+ entity: "midcir;",
+ value: "U+02AF0"
+ },
+ {
+ entity: "middot;",
+ value: "U+000B7"
+ },
+ {
+ entity: "middot",
+ value: "U+000B7"
+ },
+ {
+ entity: "minus;",
+ value: "U+02212"
+ },
+ {
+ entity: "minusb;",
+ value: "U+0229F"
+ },
+ {
+ entity: "minusd;",
+ value: "U+02238"
+ },
+ {
+ entity: "minusdu;",
+ value: "U+02A2A"
+ },
+ {
+ entity: "mlcp;",
+ value: "U+02ADB"
+ },
+ {
+ entity: "mldr;",
+ value: "U+02026"
+ },
+ {
+ entity: "mnplus;",
+ value: "U+02213"
+ },
+ {
+ entity: "models;",
+ value: "U+022A7"
+ },
+ {
+ entity: "mopf;",
+ value: "U+1D55E"
+ },
+ {
+ entity: "mp;",
+ value: "U+02213"
+ },
+ {
+ entity: "mscr;",
+ value: "U+1D4C2"
+ },
+ {
+ entity: "mstpos;",
+ value: "U+0223E"
+ },
+ {
+ entity: "mu;",
+ value: "U+003BC"
+ },
+ {
+ entity: "multimap;",
+ value: "U+022B8"
+ },
+ {
+ entity: "mumap;",
+ value: "U+022B8"
+ },
+ {
+ entity: "nLeftarrow;",
+ value: "U+021CD"
+ },
+ {
+ entity: "nLeftrightarrow;",
+ value: "U+021CE"
+ },
+ {
+ entity: "nRightarrow;",
+ value: "U+021CF"
+ },
+ {
+ entity: "nVDash;",
+ value: "U+022AF"
+ },
+ {
+ entity: "nVdash;",
+ value: "U+022AE"
+ },
+ {
+ entity: "nabla;",
+ value: "U+02207"
+ },
+ {
+ entity: "nacute;",
+ value: "U+00144"
+ },
+ {
+ entity: "nap;",
+ value: "U+02249"
+ },
+ {
+ entity: "napos;",
+ value: "U+00149"
+ },
+ {
+ entity: "napprox;",
+ value: "U+02249"
+ },
+ {
+ entity: "natur;",
+ value: "U+0266E"
+ },
+ {
+ entity: "natural;",
+ value: "U+0266E"
+ },
+ {
+ entity: "naturals;",
+ value: "U+02115"
+ },
+ {
+ entity: "nbsp;",
+ value: "U+000A0"
+ },
+ {
+ entity: "nbsp",
+ value: "U+000A0"
+ },
+ {
+ entity: "ncap;",
+ value: "U+02A43"
+ },
+ {
+ entity: "ncaron;",
+ value: "U+00148"
+ },
+ {
+ entity: "ncedil;",
+ value: "U+00146"
+ },
+ {
+ entity: "ncong;",
+ value: "U+02247"
+ },
+ {
+ entity: "ncup;",
+ value: "U+02A42"
+ },
+ {
+ entity: "ncy;",
+ value: "U+0043D"
+ },
+ {
+ entity: "ndash;",
+ value: "U+02013"
+ },
+ {
+ entity: "ne;",
+ value: "U+02260"
+ },
+ {
+ entity: "neArr;",
+ value: "U+021D7"
+ },
+ {
+ entity: "nearhk;",
+ value: "U+02924"
+ },
+ {
+ entity: "nearr;",
+ value: "U+02197"
+ },
+ {
+ entity: "nearrow;",
+ value: "U+02197"
+ },
+ {
+ entity: "nequiv;",
+ value: "U+02262"
+ },
+ {
+ entity: "nesear;",
+ value: "U+02928"
+ },
+ {
+ entity: "nexist;",
+ value: "U+02204"
+ },
+ {
+ entity: "nexists;",
+ value: "U+02204"
+ },
+ {
+ entity: "nfr;",
+ value: "U+1D52B"
+ },
+ {
+ entity: "nge;",
+ value: "U+02271"
+ },
+ {
+ entity: "ngeq;",
+ value: "U+02271"
+ },
+ {
+ entity: "ngsim;",
+ value: "U+02275"
+ },
+ {
+ entity: "ngt;",
+ value: "U+0226F"
+ },
+ {
+ entity: "ngtr;",
+ value: "U+0226F"
+ },
+ {
+ entity: "nhArr;",
+ value: "U+021CE"
+ },
+ {
+ entity: "nharr;",
+ value: "U+021AE"
+ },
+ {
+ entity: "nhpar;",
+ value: "U+02AF2"
+ },
+ {
+ entity: "ni;",
+ value: "U+0220B"
+ },
+ {
+ entity: "nis;",
+ value: "U+022FC"
+ },
+ {
+ entity: "nisd;",
+ value: "U+022FA"
+ },
+ {
+ entity: "niv;",
+ value: "U+0220B"
+ },
+ {
+ entity: "njcy;",
+ value: "U+0045A"
+ },
+ {
+ entity: "nlArr;",
+ value: "U+021CD"
+ },
+ {
+ entity: "nlarr;",
+ value: "U+0219A"
+ },
+ {
+ entity: "nldr;",
+ value: "U+02025"
+ },
+ {
+ entity: "nle;",
+ value: "U+02270"
+ },
+ {
+ entity: "nleftarrow;",
+ value: "U+0219A"
+ },
+ {
+ entity: "nleftrightarrow;",
+ value: "U+021AE"
+ },
+ {
+ entity: "nleq;",
+ value: "U+02270"
+ },
+ {
+ entity: "nless;",
+ value: "U+0226E"
+ },
+ {
+ entity: "nlsim;",
+ value: "U+02274"
+ },
+ {
+ entity: "nlt;",
+ value: "U+0226E"
+ },
+ {
+ entity: "nltri;",
+ value: "U+022EA"
+ },
+ {
+ entity: "nltrie;",
+ value: "U+022EC"
+ },
+ {
+ entity: "nmid;",
+ value: "U+02224"
+ },
+ {
+ entity: "nopf;",
+ value: "U+1D55F"
+ },
+ {
+ entity: "not;",
+ value: "U+000AC"
+ },
+ {
+ entity: "not",
+ value: "U+000AC"
+ },
+ {
+ entity: "notin;",
+ value: "U+02209"
+ },
+ {
+ entity: "notinva;",
+ value: "U+02209"
+ },
+ {
+ entity: "notinvb;",
+ value: "U+022F7"
+ },
+ {
+ entity: "notinvc;",
+ value: "U+022F6"
+ },
+ {
+ entity: "notni;",
+ value: "U+0220C"
+ },
+ {
+ entity: "notniva;",
+ value: "U+0220C"
+ },
+ {
+ entity: "notnivb;",
+ value: "U+022FE"
+ },
+ {
+ entity: "notnivc;",
+ value: "U+022FD"
+ },
+ {
+ entity: "npar;",
+ value: "U+02226"
+ },
+ {
+ entity: "nparallel;",
+ value: "U+02226"
+ },
+ {
+ entity: "npolint;",
+ value: "U+02A14"
+ },
+ {
+ entity: "npr;",
+ value: "U+02280"
+ },
+ {
+ entity: "nprcue;",
+ value: "U+022E0"
+ },
+ {
+ entity: "nprec;",
+ value: "U+02280"
+ },
+ {
+ entity: "nrArr;",
+ value: "U+021CF"
+ },
+ {
+ entity: "nrarr;",
+ value: "U+0219B"
+ },
+ {
+ entity: "nrightarrow;",
+ value: "U+0219B"
+ },
+ {
+ entity: "nrtri;",
+ value: "U+022EB"
+ },
+ {
+ entity: "nrtrie;",
+ value: "U+022ED"
+ },
+ {
+ entity: "nsc;",
+ value: "U+02281"
+ },
+ {
+ entity: "nsccue;",
+ value: "U+022E1"
+ },
+ {
+ entity: "nscr;",
+ value: "U+1D4C3"
+ },
+ {
+ entity: "nshortmid;",
+ value: "U+02224"
+ },
+ {
+ entity: "nshortparallel;",
+ value: "U+02226"
+ },
+ {
+ entity: "nsim;",
+ value: "U+02241"
+ },
+ {
+ entity: "nsime;",
+ value: "U+02244"
+ },
+ {
+ entity: "nsimeq;",
+ value: "U+02244"
+ },
+ {
+ entity: "nsmid;",
+ value: "U+02224"
+ },
+ {
+ entity: "nspar;",
+ value: "U+02226"
+ },
+ {
+ entity: "nsqsube;",
+ value: "U+022E2"
+ },
+ {
+ entity: "nsqsupe;",
+ value: "U+022E3"
+ },
+ {
+ entity: "nsub;",
+ value: "U+02284"
+ },
+ {
+ entity: "nsube;",
+ value: "U+02288"
+ },
+ {
+ entity: "nsubseteq;",
+ value: "U+02288"
+ },
+ {
+ entity: "nsucc;",
+ value: "U+02281"
+ },
+ {
+ entity: "nsup;",
+ value: "U+02285"
+ },
+ {
+ entity: "nsupe;",
+ value: "U+02289"
+ },
+ {
+ entity: "nsupseteq;",
+ value: "U+02289"
+ },
+ {
+ entity: "ntgl;",
+ value: "U+02279"
+ },
+ {
+ entity: "ntilde;",
+ value: "U+000F1"
+ },
+ {
+ entity: "ntilde",
+ value: "U+000F1"
+ },
+ {
+ entity: "ntlg;",
+ value: "U+02278"
+ },
+ {
+ entity: "ntriangleleft;",
+ value: "U+022EA"
+ },
+ {
+ entity: "ntrianglelefteq;",
+ value: "U+022EC"
+ },
+ {
+ entity: "ntriangleright;",
+ value: "U+022EB"
+ },
+ {
+ entity: "ntrianglerighteq;",
+ value: "U+022ED"
+ },
+ {
+ entity: "nu;",
+ value: "U+003BD"
+ },
+ {
+ entity: "num;",
+ value: "U+00023"
+ },
+ {
+ entity: "numero;",
+ value: "U+02116"
+ },
+ {
+ entity: "numsp;",
+ value: "U+02007"
+ },
+ {
+ entity: "nvDash;",
+ value: "U+022AD"
+ },
+ {
+ entity: "nvHarr;",
+ value: "U+02904"
+ },
+ {
+ entity: "nvdash;",
+ value: "U+022AC"
+ },
+ {
+ entity: "nvinfin;",
+ value: "U+029DE"
+ },
+ {
+ entity: "nvlArr;",
+ value: "U+02902"
+ },
+ {
+ entity: "nvrArr;",
+ value: "U+02903"
+ },
+ {
+ entity: "nwArr;",
+ value: "U+021D6"
+ },
+ {
+ entity: "nwarhk;",
+ value: "U+02923"
+ },
+ {
+ entity: "nwarr;",
+ value: "U+02196"
+ },
+ {
+ entity: "nwarrow;",
+ value: "U+02196"
+ },
+ {
+ entity: "nwnear;",
+ value: "U+02927"
+ },
+ {
+ entity: "oS;",
+ value: "U+024C8"
+ },
+ {
+ entity: "oacute;",
+ value: "U+000F3"
+ },
+ {
+ entity: "oacute",
+ value: "U+000F3"
+ },
+ {
+ entity: "oast;",
+ value: "U+0229B"
+ },
+ {
+ entity: "ocir;",
+ value: "U+0229A"
+ },
+ {
+ entity: "ocirc;",
+ value: "U+000F4"
+ },
+ {
+ entity: "ocirc",
+ value: "U+000F4"
+ },
+ {
+ entity: "ocy;",
+ value: "U+0043E"
+ },
+ {
+ entity: "odash;",
+ value: "U+0229D"
+ },
+ {
+ entity: "odblac;",
+ value: "U+00151"
+ },
+ {
+ entity: "odiv;",
+ value: "U+02A38"
+ },
+ {
+ entity: "odot;",
+ value: "U+02299"
+ },
+ {
+ entity: "odsold;",
+ value: "U+029BC"
+ },
+ {
+ entity: "oelig;",
+ value: "U+00153"
+ },
+ {
+ entity: "ofcir;",
+ value: "U+029BF"
+ },
+ {
+ entity: "ofr;",
+ value: "U+1D52C"
+ },
+ {
+ entity: "ogon;",
+ value: "U+002DB"
+ },
+ {
+ entity: "ograve;",
+ value: "U+000F2"
+ },
+ {
+ entity: "ograve",
+ value: "U+000F2"
+ },
+ {
+ entity: "ogt;",
+ value: "U+029C1"
+ },
+ {
+ entity: "ohbar;",
+ value: "U+029B5"
+ },
+ {
+ entity: "ohm;",
+ value: "U+003A9"
+ },
+ {
+ entity: "oint;",
+ value: "U+0222E"
+ },
+ {
+ entity: "olarr;",
+ value: "U+021BA"
+ },
+ {
+ entity: "olcir;",
+ value: "U+029BE"
+ },
+ {
+ entity: "olcross;",
+ value: "U+029BB"
+ },
+ {
+ entity: "oline;",
+ value: "U+0203E"
+ },
+ {
+ entity: "olt;",
+ value: "U+029C0"
+ },
+ {
+ entity: "omacr;",
+ value: "U+0014D"
+ },
+ {
+ entity: "omega;",
+ value: "U+003C9"
+ },
+ {
+ entity: "omicron;",
+ value: "U+003BF"
+ },
+ {
+ entity: "omid;",
+ value: "U+029B6"
+ },
+ {
+ entity: "ominus;",
+ value: "U+02296"
+ },
+ {
+ entity: "oopf;",
+ value: "U+1D560"
+ },
+ {
+ entity: "opar;",
+ value: "U+029B7"
+ },
+ {
+ entity: "operp;",
+ value: "U+029B9"
+ },
+ {
+ entity: "oplus;",
+ value: "U+02295"
+ },
+ {
+ entity: "or;",
+ value: "U+02228"
+ },
+ {
+ entity: "orarr;",
+ value: "U+021BB"
+ },
+ {
+ entity: "ord;",
+ value: "U+02A5D"
+ },
+ {
+ entity: "order;",
+ value: "U+02134"
+ },
+ {
+ entity: "orderof;",
+ value: "U+02134"
+ },
+ {
+ entity: "ordf;",
+ value: "U+000AA"
+ },
+ {
+ entity: "ordf",
+ value: "U+000AA"
+ },
+ {
+ entity: "ordm;",
+ value: "U+000BA"
+ },
+ {
+ entity: "ordm",
+ value: "U+000BA"
+ },
+ {
+ entity: "origof;",
+ value: "U+022B6"
+ },
+ {
+ entity: "oror;",
+ value: "U+02A56"
+ },
+ {
+ entity: "orslope;",
+ value: "U+02A57"
+ },
+ {
+ entity: "orv;",
+ value: "U+02A5B"
+ },
+ {
+ entity: "oscr;",
+ value: "U+02134"
+ },
+ {
+ entity: "oslash;",
+ value: "U+000F8"
+ },
+ {
+ entity: "oslash",
+ value: "U+000F8"
+ },
+ {
+ entity: "osol;",
+ value: "U+02298"
+ },
+ {
+ entity: "otilde;",
+ value: "U+000F5"
+ },
+ {
+ entity: "otilde",
+ value: "U+000F5"
+ },
+ {
+ entity: "otimes;",
+ value: "U+02297"
+ },
+ {
+ entity: "otimesas;",
+ value: "U+02A36"
+ },
+ {
+ entity: "ouml;",
+ value: "U+000F6"
+ },
+ {
+ entity: "ouml",
+ value: "U+000F6"
+ },
+ {
+ entity: "ovbar;",
+ value: "U+0233D"
+ },
+ {
+ entity: "par;",
+ value: "U+02225"
+ },
+ {
+ entity: "para;",
+ value: "U+000B6"
+ },
+ {
+ entity: "para",
+ value: "U+000B6"
+ },
+ {
+ entity: "parallel;",
+ value: "U+02225"
+ },
+ {
+ entity: "parsim;",
+ value: "U+02AF3"
+ },
+ {
+ entity: "parsl;",
+ value: "U+02AFD"
+ },
+ {
+ entity: "part;",
+ value: "U+02202"
+ },
+ {
+ entity: "pcy;",
+ value: "U+0043F"
+ },
+ {
+ entity: "percnt;",
+ value: "U+00025"
+ },
+ {
+ entity: "period;",
+ value: "U+0002E"
+ },
+ {
+ entity: "permil;",
+ value: "U+02030"
+ },
+ {
+ entity: "perp;",
+ value: "U+022A5"
+ },
+ {
+ entity: "pertenk;",
+ value: "U+02031"
+ },
+ {
+ entity: "pfr;",
+ value: "U+1D52D"
+ },
+ {
+ entity: "phi;",
+ value: "U+003C6"
+ },
+ {
+ entity: "phiv;",
+ value: "U+003D5"
+ },
+ {
+ entity: "phmmat;",
+ value: "U+02133"
+ },
+ {
+ entity: "phone;",
+ value: "U+0260E"
+ },
+ {
+ entity: "pi;",
+ value: "U+003C0"
+ },
+ {
+ entity: "pitchfork;",
+ value: "U+022D4"
+ },
+ {
+ entity: "piv;",
+ value: "U+003D6"
+ },
+ {
+ entity: "planck;",
+ value: "U+0210F"
+ },
+ {
+ entity: "planckh;",
+ value: "U+0210E"
+ },
+ {
+ entity: "plankv;",
+ value: "U+0210F"
+ },
+ {
+ entity: "plus;",
+ value: "U+0002B"
+ },
+ {
+ entity: "plusacir;",
+ value: "U+02A23"
+ },
+ {
+ entity: "plusb;",
+ value: "U+0229E"
+ },
+ {
+ entity: "pluscir;",
+ value: "U+02A22"
+ },
+ {
+ entity: "plusdo;",
+ value: "U+02214"
+ },
+ {
+ entity: "plusdu;",
+ value: "U+02A25"
+ },
+ {
+ entity: "pluse;",
+ value: "U+02A72"
+ },
+ {
+ entity: "plusmn;",
+ value: "U+000B1"
+ },
+ {
+ entity: "plusmn",
+ value: "U+000B1"
+ },
+ {
+ entity: "plussim;",
+ value: "U+02A26"
+ },
+ {
+ entity: "plustwo;",
+ value: "U+02A27"
+ },
+ {
+ entity: "pm;",
+ value: "U+000B1"
+ },
+ {
+ entity: "pointint;",
+ value: "U+02A15"
+ },
+ {
+ entity: "popf;",
+ value: "U+1D561"
+ },
+ {
+ entity: "pound;",
+ value: "U+000A3"
+ },
+ {
+ entity: "pound",
+ value: "U+000A3"
+ },
+ {
+ entity: "pr;",
+ value: "U+0227A"
+ },
+ {
+ entity: "prE;",
+ value: "U+02AB3"
+ },
+ {
+ entity: "prap;",
+ value: "U+02AB7"
+ },
+ {
+ entity: "prcue;",
+ value: "U+0227C"
+ },
+ {
+ entity: "pre;",
+ value: "U+02AAF"
+ },
+ {
+ entity: "prec;",
+ value: "U+0227A"
+ },
+ {
+ entity: "precapprox;",
+ value: "U+02AB7"
+ },
+ {
+ entity: "preccurlyeq;",
+ value: "U+0227C"
+ },
+ {
+ entity: "preceq;",
+ value: "U+02AAF"
+ },
+ {
+ entity: "precnapprox;",
+ value: "U+02AB9"
+ },
+ {
+ entity: "precneqq;",
+ value: "U+02AB5"
+ },
+ {
+ entity: "precnsim;",
+ value: "U+022E8"
+ },
+ {
+ entity: "precsim;",
+ value: "U+0227E"
+ },
+ {
+ entity: "prime;",
+ value: "U+02032"
+ },
+ {
+ entity: "primes;",
+ value: "U+02119"
+ },
+ {
+ entity: "prnE;",
+ value: "U+02AB5"
+ },
+ {
+ entity: "prnap;",
+ value: "U+02AB9"
+ },
+ {
+ entity: "prnsim;",
+ value: "U+022E8"
+ },
+ {
+ entity: "prod;",
+ value: "U+0220F"
+ },
+ {
+ entity: "profalar;",
+ value: "U+0232E"
+ },
+ {
+ entity: "profline;",
+ value: "U+02312"
+ },
+ {
+ entity: "profsurf;",
+ value: "U+02313"
+ },
+ {
+ entity: "prop;",
+ value: "U+0221D"
+ },
+ {
+ entity: "propto;",
+ value: "U+0221D"
+ },
+ {
+ entity: "prsim;",
+ value: "U+0227E"
+ },
+ {
+ entity: "prurel;",
+ value: "U+022B0"
+ },
+ {
+ entity: "pscr;",
+ value: "U+1D4C5"
+ },
+ {
+ entity: "psi;",
+ value: "U+003C8"
+ },
+ {
+ entity: "puncsp;",
+ value: "U+02008"
+ },
+ {
+ entity: "qfr;",
+ value: "U+1D52E"
+ },
+ {
+ entity: "qint;",
+ value: "U+02A0C"
+ },
+ {
+ entity: "qopf;",
+ value: "U+1D562"
+ },
+ {
+ entity: "qprime;",
+ value: "U+02057"
+ },
+ {
+ entity: "qscr;",
+ value: "U+1D4C6"
+ },
+ {
+ entity: "quaternions;",
+ value: "U+0210D"
+ },
+ {
+ entity: "quatint;",
+ value: "U+02A16"
+ },
+ {
+ entity: "quest;",
+ value: "U+0003F"
+ },
+ {
+ entity: "questeq;",
+ value: "U+0225F"
+ },
+ {
+ entity: "quot;",
+ value: "U+00022"
+ },
+ {
+ entity: "quot",
+ value: "U+00022"
+ },
+ {
+ entity: "rAarr;",
+ value: "U+021DB"
+ },
+ {
+ entity: "rArr;",
+ value: "U+021D2"
+ },
+ {
+ entity: "rAtail;",
+ value: "U+0291C"
+ },
+ {
+ entity: "rBarr;",
+ value: "U+0290F"
+ },
+ {
+ entity: "rHar;",
+ value: "U+02964"
+ },
+ {
+ entity: "racute;",
+ value: "U+00155"
+ },
+ {
+ entity: "radic;",
+ value: "U+0221A"
+ },
+ {
+ entity: "raemptyv;",
+ value: "U+029B3"
+ },
+ {
+ entity: "rang;",
+ value: "U+027E9"
+ },
+ {
+ entity: "rangd;",
+ value: "U+02992"
+ },
+ {
+ entity: "range;",
+ value: "U+029A5"
+ },
+ {
+ entity: "rangle;",
+ value: "U+027E9"
+ },
+ {
+ entity: "raquo;",
+ value: "U+000BB"
+ },
+ {
+ entity: "raquo",
+ value: "U+000BB"
+ },
+ {
+ entity: "rarr;",
+ value: "U+02192"
+ },
+ {
+ entity: "rarrap;",
+ value: "U+02975"
+ },
+ {
+ entity: "rarrb;",
+ value: "U+021E5"
+ },
+ {
+ entity: "rarrbfs;",
+ value: "U+02920"
+ },
+ {
+ entity: "rarrc;",
+ value: "U+02933"
+ },
+ {
+ entity: "rarrfs;",
+ value: "U+0291E"
+ },
+ {
+ entity: "rarrhk;",
+ value: "U+021AA"
+ },
+ {
+ entity: "rarrlp;",
+ value: "U+021AC"
+ },
+ {
+ entity: "rarrpl;",
+ value: "U+02945"
+ },
+ {
+ entity: "rarrsim;",
+ value: "U+02974"
+ },
+ {
+ entity: "rarrtl;",
+ value: "U+021A3"
+ },
+ {
+ entity: "rarrw;",
+ value: "U+0219D"
+ },
+ {
+ entity: "ratail;",
+ value: "U+0291A"
+ },
+ {
+ entity: "ratio;",
+ value: "U+02236"
+ },
+ {
+ entity: "rationals;",
+ value: "U+0211A"
+ },
+ {
+ entity: "rbarr;",
+ value: "U+0290D"
+ },
+ {
+ entity: "rbbrk;",
+ value: "U+02773"
+ },
+ {
+ entity: "rbrace;",
+ value: "U+0007D"
+ },
+ {
+ entity: "rbrack;",
+ value: "U+0005D"
+ },
+ {
+ entity: "rbrke;",
+ value: "U+0298C"
+ },
+ {
+ entity: "rbrksld;",
+ value: "U+0298E"
+ },
+ {
+ entity: "rbrkslu;",
+ value: "U+02990"
+ },
+ {
+ entity: "rcaron;",
+ value: "U+00159"
+ },
+ {
+ entity: "rcedil;",
+ value: "U+00157"
+ },
+ {
+ entity: "rceil;",
+ value: "U+02309"
+ },
+ {
+ entity: "rcub;",
+ value: "U+0007D"
+ },
+ {
+ entity: "rcy;",
+ value: "U+00440"
+ },
+ {
+ entity: "rdca;",
+ value: "U+02937"
+ },
+ {
+ entity: "rdldhar;",
+ value: "U+02969"
+ },
+ {
+ entity: "rdquo;",
+ value: "U+0201D"
+ },
+ {
+ entity: "rdquor;",
+ value: "U+0201D"
+ },
+ {
+ entity: "rdsh;",
+ value: "U+021B3"
+ },
+ {
+ entity: "real;",
+ value: "U+0211C"
+ },
+ {
+ entity: "realine;",
+ value: "U+0211B"
+ },
+ {
+ entity: "realpart;",
+ value: "U+0211C"
+ },
+ {
+ entity: "reals;",
+ value: "U+0211D"
+ },
+ {
+ entity: "rect;",
+ value: "U+025AD"
+ },
+ {
+ entity: "reg;",
+ value: "U+000AE"
+ },
+ {
+ entity: "reg",
+ value: "U+000AE"
+ },
+ {
+ entity: "rfisht;",
+ value: "U+0297D"
+ },
+ {
+ entity: "rfloor;",
+ value: "U+0230B"
+ },
+ {
+ entity: "rfr;",
+ value: "U+1D52F"
+ },
+ {
+ entity: "rhard;",
+ value: "U+021C1"
+ },
+ {
+ entity: "rharu;",
+ value: "U+021C0"
+ },
+ {
+ entity: "rharul;",
+ value: "U+0296C"
+ },
+ {
+ entity: "rho;",
+ value: "U+003C1"
+ },
+ {
+ entity: "rhov;",
+ value: "U+003F1"
+ },
+ {
+ entity: "rightarrow;",
+ value: "U+02192"
+ },
+ {
+ entity: "rightarrowtail;",
+ value: "U+021A3"
+ },
+ {
+ entity: "rightharpoondown;",
+ value: "U+021C1"
+ },
+ {
+ entity: "rightharpoonup;",
+ value: "U+021C0"
+ },
+ {
+ entity: "rightleftarrows;",
+ value: "U+021C4"
+ },
+ {
+ entity: "rightleftharpoons;",
+ value: "U+021CC"
+ },
+ {
+ entity: "rightrightarrows;",
+ value: "U+021C9"
+ },
+ {
+ entity: "rightsquigarrow;",
+ value: "U+0219D"
+ },
+ {
+ entity: "rightthreetimes;",
+ value: "U+022CC"
+ },
+ {
+ entity: "ring;",
+ value: "U+002DA"
+ },
+ {
+ entity: "risingdotseq;",
+ value: "U+02253"
+ },
+ {
+ entity: "rlarr;",
+ value: "U+021C4"
+ },
+ {
+ entity: "rlhar;",
+ value: "U+021CC"
+ },
+ {
+ entity: "rlm;",
+ value: "U+0200F"
+ },
+ {
+ entity: "rmoust;",
+ value: "U+023B1"
+ },
+ {
+ entity: "rmoustache;",
+ value: "U+023B1"
+ },
+ {
+ entity: "rnmid;",
+ value: "U+02AEE"
+ },
+ {
+ entity: "roang;",
+ value: "U+027ED"
+ },
+ {
+ entity: "roarr;",
+ value: "U+021FE"
+ },
+ {
+ entity: "robrk;",
+ value: "U+027E7"
+ },
+ {
+ entity: "ropar;",
+ value: "U+02986"
+ },
+ {
+ entity: "ropf;",
+ value: "U+1D563"
+ },
+ {
+ entity: "roplus;",
+ value: "U+02A2E"
+ },
+ {
+ entity: "rotimes;",
+ value: "U+02A35"
+ },
+ {
+ entity: "rpar;",
+ value: "U+00029"
+ },
+ {
+ entity: "rpargt;",
+ value: "U+02994"
+ },
+ {
+ entity: "rppolint;",
+ value: "U+02A12"
+ },
+ {
+ entity: "rrarr;",
+ value: "U+021C9"
+ },
+ {
+ entity: "rsaquo;",
+ value: "U+0203A"
+ },
+ {
+ entity: "rscr;",
+ value: "U+1D4C7"
+ },
+ {
+ entity: "rsh;",
+ value: "U+021B1"
+ },
+ {
+ entity: "rsqb;",
+ value: "U+0005D"
+ },
+ {
+ entity: "rsquo;",
+ value: "U+02019"
+ },
+ {
+ entity: "rsquor;",
+ value: "U+02019"
+ },
+ {
+ entity: "rthree;",
+ value: "U+022CC"
+ },
+ {
+ entity: "rtimes;",
+ value: "U+022CA"
+ },
+ {
+ entity: "rtri;",
+ value: "U+025B9"
+ },
+ {
+ entity: "rtrie;",
+ value: "U+022B5"
+ },
+ {
+ entity: "rtrif;",
+ value: "U+025B8"
+ },
+ {
+ entity: "rtriltri;",
+ value: "U+029CE"
+ },
+ {
+ entity: "ruluhar;",
+ value: "U+02968"
+ },
+ {
+ entity: "rx;",
+ value: "U+0211E"
+ },
+ {
+ entity: "sacute;",
+ value: "U+0015B"
+ },
+ {
+ entity: "sbquo;",
+ value: "U+0201A"
+ },
+ {
+ entity: "sc;",
+ value: "U+0227B"
+ },
+ {
+ entity: "scE;",
+ value: "U+02AB4"
+ },
+ {
+ entity: "scap;",
+ value: "U+02AB8"
+ },
+ {
+ entity: "scaron;",
+ value: "U+00161"
+ },
+ {
+ entity: "sccue;",
+ value: "U+0227D"
+ },
+ {
+ entity: "sce;",
+ value: "U+02AB0"
+ },
+ {
+ entity: "scedil;",
+ value: "U+0015F"
+ },
+ {
+ entity: "scirc;",
+ value: "U+0015D"
+ },
+ {
+ entity: "scnE;",
+ value: "U+02AB6"
+ },
+ {
+ entity: "scnap;",
+ value: "U+02ABA"
+ },
+ {
+ entity: "scnsim;",
+ value: "U+022E9"
+ },
+ {
+ entity: "scpolint;",
+ value: "U+02A13"
+ },
+ {
+ entity: "scsim;",
+ value: "U+0227F"
+ },
+ {
+ entity: "scy;",
+ value: "U+00441"
+ },
+ {
+ entity: "sdot;",
+ value: "U+022C5"
+ },
+ {
+ entity: "sdotb;",
+ value: "U+022A1"
+ },
+ {
+ entity: "sdote;",
+ value: "U+02A66"
+ },
+ {
+ entity: "seArr;",
+ value: "U+021D8"
+ },
+ {
+ entity: "searhk;",
+ value: "U+02925"
+ },
+ {
+ entity: "searr;",
+ value: "U+02198"
+ },
+ {
+ entity: "searrow;",
+ value: "U+02198"
+ },
+ {
+ entity: "sect;",
+ value: "U+000A7"
+ },
+ {
+ entity: "sect",
+ value: "U+000A7"
+ },
+ {
+ entity: "semi;",
+ value: "U+0003B"
+ },
+ {
+ entity: "seswar;",
+ value: "U+02929"
+ },
+ {
+ entity: "setminus;",
+ value: "U+02216"
+ },
+ {
+ entity: "setmn;",
+ value: "U+02216"
+ },
+ {
+ entity: "sext;",
+ value: "U+02736"
+ },
+ {
+ entity: "sfr;",
+ value: "U+1D530"
+ },
+ {
+ entity: "sfrown;",
+ value: "U+02322"
+ },
+ {
+ entity: "sharp;",
+ value: "U+0266F"
+ },
+ {
+ entity: "shchcy;",
+ value: "U+00449"
+ },
+ {
+ entity: "shcy;",
+ value: "U+00448"
+ },
+ {
+ entity: "shortmid;",
+ value: "U+02223"
+ },
+ {
+ entity: "shortparallel;",
+ value: "U+02225"
+ },
+ {
+ entity: "shy;",
+ value: "U+000AD "
+ },
+ {
+ entity: "shy",
+ value: "U+000AD "
+ },
+ {
+ entity: "sigma;",
+ value: "U+003C3"
+ },
+ {
+ entity: "sigmaf;",
+ value: "U+003C2"
+ },
+ {
+ entity: "sigmav;",
+ value: "U+003C2"
+ },
+ {
+ entity: "sim;",
+ value: "U+0223C"
+ },
+ {
+ entity: "simdot;",
+ value: "U+02A6A"
+ },
+ {
+ entity: "sime;",
+ value: "U+02243"
+ },
+ {
+ entity: "simeq;",
+ value: "U+02243"
+ },
+ {
+ entity: "simg;",
+ value: "U+02A9E"
+ },
+ {
+ entity: "simgE;",
+ value: "U+02AA0"
+ },
+ {
+ entity: "siml;",
+ value: "U+02A9D"
+ },
+ {
+ entity: "simlE;",
+ value: "U+02A9F"
+ },
+ {
+ entity: "simne;",
+ value: "U+02246"
+ },
+ {
+ entity: "simplus;",
+ value: "U+02A24"
+ },
+ {
+ entity: "simrarr;",
+ value: "U+02972"
+ },
+ {
+ entity: "slarr;",
+ value: "U+02190"
+ },
+ {
+ entity: "smallsetminus;",
+ value: "U+02216"
+ },
+ {
+ entity: "smashp;",
+ value: "U+02A33"
+ },
+ {
+ entity: "smeparsl;",
+ value: "U+029E4"
+ },
+ {
+ entity: "smid;",
+ value: "U+02223"
+ },
+ {
+ entity: "smile;",
+ value: "U+02323"
+ },
+ {
+ entity: "smt;",
+ value: "U+02AAA"
+ },
+ {
+ entity: "smte;",
+ value: "U+02AAC"
+ },
+ {
+ entity: "softcy;",
+ value: "U+0044C"
+ },
+ {
+ entity: "sol;",
+ value: "U+0002F"
+ },
+ {
+ entity: "solb;",
+ value: "U+029C4"
+ },
+ {
+ entity: "solbar;",
+ value: "U+0233F"
+ },
+ {
+ entity: "sopf;",
+ value: "U+1D564"
+ },
+ {
+ entity: "spades;",
+ value: "U+02660"
+ },
+ {
+ entity: "spadesuit;",
+ value: "U+02660"
+ },
+ {
+ entity: "spar;",
+ value: "U+02225"
+ },
+ {
+ entity: "sqcap;",
+ value: "U+02293"
+ },
+ {
+ entity: "sqcup;",
+ value: "U+02294"
+ },
+ {
+ entity: "sqsub;",
+ value: "U+0228F"
+ },
+ {
+ entity: "sqsube;",
+ value: "U+02291"
+ },
+ {
+ entity: "sqsubset;",
+ value: "U+0228F"
+ },
+ {
+ entity: "sqsubseteq;",
+ value: "U+02291"
+ },
+ {
+ entity: "sqsup;",
+ value: "U+02290"
+ },
+ {
+ entity: "sqsupe;",
+ value: "U+02292"
+ },
+ {
+ entity: "sqsupset;",
+ value: "U+02290"
+ },
+ {
+ entity: "sqsupseteq;",
+ value: "U+02292"
+ },
+ {
+ entity: "squ;",
+ value: "U+025A1"
+ },
+ {
+ entity: "square;",
+ value: "U+025A1"
+ },
+ {
+ entity: "squarf;",
+ value: "U+025AA"
+ },
+ {
+ entity: "squf;",
+ value: "U+025AA"
+ },
+ {
+ entity: "srarr;",
+ value: "U+02192"
+ },
+ {
+ entity: "sscr;",
+ value: "U+1D4C8"
+ },
+ {
+ entity: "ssetmn;",
+ value: "U+02216"
+ },
+ {
+ entity: "ssmile;",
+ value: "U+02323"
+ },
+ {
+ entity: "sstarf;",
+ value: "U+022C6"
+ },
+ {
+ entity: "star;",
+ value: "U+02606"
+ },
+ {
+ entity: "starf;",
+ value: "U+02605"
+ },
+ {
+ entity: "straightepsilon;",
+ value: "U+003F5"
+ },
+ {
+ entity: "straightphi;",
+ value: "U+003D5"
+ },
+ {
+ entity: "strns;",
+ value: "U+000AF"
+ },
+ {
+ entity: "sub;",
+ value: "U+02282"
+ },
+ {
+ entity: "subE;",
+ value: "U+02AC5"
+ },
+ {
+ entity: "subdot;",
+ value: "U+02ABD"
+ },
+ {
+ entity: "sube;",
+ value: "U+02286"
+ },
+ {
+ entity: "subedot;",
+ value: "U+02AC3"
+ },
+ {
+ entity: "submult;",
+ value: "U+02AC1"
+ },
+ {
+ entity: "subnE;",
+ value: "U+02ACB"
+ },
+ {
+ entity: "subne;",
+ value: "U+0228A"
+ },
+ {
+ entity: "subplus;",
+ value: "U+02ABF"
+ },
+ {
+ entity: "subrarr;",
+ value: "U+02979"
+ },
+ {
+ entity: "subset;",
+ value: "U+02282"
+ },
+ {
+ entity: "subseteq;",
+ value: "U+02286"
+ },
+ {
+ entity: "subseteqq;",
+ value: "U+02AC5"
+ },
+ {
+ entity: "subsetneq;",
+ value: "U+0228A"
+ },
+ {
+ entity: "subsetneqq;",
+ value: "U+02ACB"
+ },
+ {
+ entity: "subsim;",
+ value: "U+02AC7"
+ },
+ {
+ entity: "subsub;",
+ value: "U+02AD5"
+ },
+ {
+ entity: "subsup;",
+ value: "U+02AD3"
+ },
+ {
+ entity: "succ;",
+ value: "U+0227B"
+ },
+ {
+ entity: "succapprox;",
+ value: "U+02AB8"
+ },
+ {
+ entity: "succcurlyeq;",
+ value: "U+0227D"
+ },
+ {
+ entity: "succeq;",
+ value: "U+02AB0"
+ },
+ {
+ entity: "succnapprox;",
+ value: "U+02ABA"
+ },
+ {
+ entity: "succneqq;",
+ value: "U+02AB6"
+ },
+ {
+ entity: "succnsim;",
+ value: "U+022E9"
+ },
+ {
+ entity: "succsim;",
+ value: "U+0227F"
+ },
+ {
+ entity: "sum;",
+ value: "U+02211"
+ },
+ {
+ entity: "sung;",
+ value: "U+0266A"
+ },
+ {
+ entity: "sup1;",
+ value: "U+000B9"
+ },
+ {
+ entity: "sup1",
+ value: "U+000B9"
+ },
+ {
+ entity: "sup2;",
+ value: "U+000B2"
+ },
+ {
+ entity: "sup2",
+ value: "U+000B2"
+ },
+ {
+ entity: "sup3;",
+ value: "U+000B3"
+ },
+ {
+ entity: "sup3",
+ value: "U+000B3"
+ },
+ {
+ entity: "sup;",
+ value: "U+02283"
+ },
+ {
+ entity: "supE;",
+ value: "U+02AC6"
+ },
+ {
+ entity: "supdot;",
+ value: "U+02ABE"
+ },
+ {
+ entity: "supdsub;",
+ value: "U+02AD8"
+ },
+ {
+ entity: "supe;",
+ value: "U+02287"
+ },
+ {
+ entity: "supedot;",
+ value: "U+02AC4"
+ },
+ {
+ entity: "suphsol;",
+ value: "U+027C9"
+ },
+ {
+ entity: "suphsub;",
+ value: "U+02AD7"
+ },
+ {
+ entity: "suplarr;",
+ value: "U+0297B"
+ },
+ {
+ entity: "supmult;",
+ value: "U+02AC2"
+ },
+ {
+ entity: "supnE;",
+ value: "U+02ACC"
+ },
+ {
+ entity: "supne;",
+ value: "U+0228B"
+ },
+ {
+ entity: "supplus;",
+ value: "U+02AC0"
+ },
+ {
+ entity: "supset;",
+ value: "U+02283"
+ },
+ {
+ entity: "supseteq;",
+ value: "U+02287"
+ },
+ {
+ entity: "supseteqq;",
+ value: "U+02AC6"
+ },
+ {
+ entity: "supsetneq;",
+ value: "U+0228B"
+ },
+ {
+ entity: "supsetneqq;",
+ value: "U+02ACC"
+ },
+ {
+ entity: "supsim;",
+ value: "U+02AC8"
+ },
+ {
+ entity: "supsub;",
+ value: "U+02AD4"
+ },
+ {
+ entity: "supsup;",
+ value: "U+02AD6"
+ },
+ {
+ entity: "swArr;",
+ value: "U+021D9"
+ },
+ {
+ entity: "swarhk;",
+ value: "U+02926"
+ },
+ {
+ entity: "swarr;",
+ value: "U+02199"
+ },
+ {
+ entity: "swarrow;",
+ value: "U+02199"
+ },
+ {
+ entity: "swnwar;",
+ value: "U+0292A"
+ },
+ {
+ entity: "szlig;",
+ value: "U+000DF"
+ },
+ {
+ entity: "szlig",
+ value: "U+000DF"
+ },
+ {
+ entity: "target;",
+ value: "U+02316"
+ },
+ {
+ entity: "tau;",
+ value: "U+003C4"
+ },
+ {
+ entity: "tbrk;",
+ value: "U+023B4"
+ },
+ {
+ entity: "tcaron;",
+ value: "U+00165"
+ },
+ {
+ entity: "tcedil;",
+ value: "U+00163"
+ },
+ {
+ entity: "tcy;",
+ value: "U+00442"
+ },
+ {
+ entity: "tdot;",
+ value: "U+020DB"
+ },
+ {
+ entity: "telrec;",
+ value: "U+02315"
+ },
+ {
+ entity: "tfr;",
+ value: "U+1D531"
+ },
+ {
+ entity: "there4;",
+ value: "U+02234"
+ },
+ {
+ entity: "therefore;",
+ value: "U+02234"
+ },
+ {
+ entity: "theta;",
+ value: "U+003B8"
+ },
+ {
+ entity: "thetasym;",
+ value: "U+003D1"
+ },
+ {
+ entity: "thetav;",
+ value: "U+003D1"
+ },
+ {
+ entity: "thickapprox;",
+ value: "U+02248"
+ },
+ {
+ entity: "thicksim;",
+ value: "U+0223C"
+ },
+ {
+ entity: "thinsp;",
+ value: "U+02009"
+ },
+ {
+ entity: "thkap;",
+ value: "U+02248"
+ },
+ {
+ entity: "thksim;",
+ value: "U+0223C"
+ },
+ {
+ entity: "thorn;",
+ value: "U+000FE"
+ },
+ {
+ entity: "thorn",
+ value: "U+000FE"
+ },
+ {
+ entity: "tilde;",
+ value: "U+002DC"
+ },
+ {
+ entity: "times;",
+ value: "U+000D7"
+ },
+ {
+ entity: "times",
+ value: "U+000D7"
+ },
+ {
+ entity: "timesb;",
+ value: "U+022A0"
+ },
+ {
+ entity: "timesbar;",
+ value: "U+02A31"
+ },
+ {
+ entity: "timesd;",
+ value: "U+02A30"
+ },
+ {
+ entity: "tint;",
+ value: "U+0222D"
+ },
+ {
+ entity: "toea;",
+ value: "U+02928"
+ },
+ {
+ entity: "top;",
+ value: "U+022A4"
+ },
+ {
+ entity: "topbot;",
+ value: "U+02336"
+ },
+ {
+ entity: "topcir;",
+ value: "U+02AF1"
+ },
+ {
+ entity: "topf;",
+ value: "U+1D565"
+ },
+ {
+ entity: "topfork;",
+ value: "U+02ADA"
+ },
+ {
+ entity: "tosa;",
+ value: "U+02929"
+ },
+ {
+ entity: "tprime;",
+ value: "U+02034"
+ },
+ {
+ entity: "trade;",
+ value: "U+02122"
+ },
+ {
+ entity: "triangle;",
+ value: "U+025B5"
+ },
+ {
+ entity: "triangledown;",
+ value: "U+025BF"
+ },
+ {
+ entity: "triangleleft;",
+ value: "U+025C3"
+ },
+ {
+ entity: "trianglelefteq;",
+ value: "U+022B4"
+ },
+ {
+ entity: "triangleq;",
+ value: "U+0225C"
+ },
+ {
+ entity: "triangleright;",
+ value: "U+025B9"
+ },
+ {
+ entity: "trianglerighteq;",
+ value: "U+022B5"
+ },
+ {
+ entity: "tridot;",
+ value: "U+025EC"
+ },
+ {
+ entity: "trie;",
+ value: "U+0225C"
+ },
+ {
+ entity: "triminus;",
+ value: "U+02A3A"
+ },
+ {
+ entity: "triplus;",
+ value: "U+02A39"
+ },
+ {
+ entity: "trisb;",
+ value: "U+029CD"
+ },
+ {
+ entity: "tritime;",
+ value: "U+02A3B"
+ },
+ {
+ entity: "trpezium;",
+ value: "U+023E2"
+ },
+ {
+ entity: "tscr;",
+ value: "U+1D4C9"
+ },
+ {
+ entity: "tscy;",
+ value: "U+00446"
+ },
+ {
+ entity: "tshcy;",
+ value: "U+0045B"
+ },
+ {
+ entity: "tstrok;",
+ value: "U+00167"
+ },
+ {
+ entity: "twixt;",
+ value: "U+0226C"
+ },
+ {
+ entity: "twoheadleftarrow;",
+ value: "U+0219E"
+ },
+ {
+ entity: "twoheadrightarrow;",
+ value: "U+021A0"
+ },
+ {
+ entity: "uArr;",
+ value: "U+021D1"
+ },
+ {
+ entity: "uHar;",
+ value: "U+02963"
+ },
+ {
+ entity: "uacute;",
+ value: "U+000FA"
+ },
+ {
+ entity: "uacute",
+ value: "U+000FA"
+ },
+ {
+ entity: "uarr;",
+ value: "U+02191"
+ },
+ {
+ entity: "ubrcy;",
+ value: "U+0045E"
+ },
+ {
+ entity: "ubreve;",
+ value: "U+0016D"
+ },
+ {
+ entity: "ucirc;",
+ value: "U+000FB"
+ },
+ {
+ entity: "ucirc",
+ value: "U+000FB"
+ },
+ {
+ entity: "ucy;",
+ value: "U+00443"
+ },
+ {
+ entity: "udarr;",
+ value: "U+021C5"
+ },
+ {
+ entity: "udblac;",
+ value: "U+00171"
+ },
+ {
+ entity: "udhar;",
+ value: "U+0296E"
+ },
+ {
+ entity: "ufisht;",
+ value: "U+0297E"
+ },
+ {
+ entity: "ufr;",
+ value: "U+1D532"
+ },
+ {
+ entity: "ugrave;",
+ value: "U+000F9"
+ },
+ {
+ entity: "ugrave",
+ value: "U+000F9"
+ },
+ {
+ entity: "uharl;",
+ value: "U+021BF"
+ },
+ {
+ entity: "uharr;",
+ value: "U+021BE"
+ },
+ {
+ entity: "uhblk;",
+ value: "U+02580"
+ },
+ {
+ entity: "ulcorn;",
+ value: "U+0231C"
+ },
+ {
+ entity: "ulcorner;",
+ value: "U+0231C"
+ },
+ {
+ entity: "ulcrop;",
+ value: "U+0230F"
+ },
+ {
+ entity: "ultri;",
+ value: "U+025F8"
+ },
+ {
+ entity: "umacr;",
+ value: "U+0016B"
+ },
+ {
+ entity: "uml;",
+ value: "U+000A8"
+ },
+ {
+ entity: "uml",
+ value: "U+000A8"
+ },
+ {
+ entity: "uogon;",
+ value: "U+00173"
+ },
+ {
+ entity: "uopf;",
+ value: "U+1D566"
+ },
+ {
+ entity: "uparrow;",
+ value: "U+02191"
+ },
+ {
+ entity: "updownarrow;",
+ value: "U+02195"
+ },
+ {
+ entity: "upharpoonleft;",
+ value: "U+021BF"
+ },
+ {
+ entity: "upharpoonright;",
+ value: "U+021BE"
+ },
+ {
+ entity: "uplus;",
+ value: "U+0228E"
+ },
+ {
+ entity: "upsi;",
+ value: "U+003C5"
+ },
+ {
+ entity: "upsih;",
+ value: "U+003D2"
+ },
+ {
+ entity: "upsilon;",
+ value: "U+003C5"
+ },
+ {
+ entity: "upuparrows;",
+ value: "U+021C8"
+ },
+ {
+ entity: "urcorn;",
+ value: "U+0231D"
+ },
+ {
+ entity: "urcorner;",
+ value: "U+0231D"
+ },
+ {
+ entity: "urcrop;",
+ value: "U+0230E"
+ },
+ {
+ entity: "uring;",
+ value: "U+0016F"
+ },
+ {
+ entity: "urtri;",
+ value: "U+025F9"
+ },
+ {
+ entity: "uscr;",
+ value: "U+1D4CA"
+ },
+ {
+ entity: "utdot;",
+ value: "U+022F0"
+ },
+ {
+ entity: "utilde;",
+ value: "U+00169"
+ },
+ {
+ entity: "utri;",
+ value: "U+025B5"
+ },
+ {
+ entity: "utrif;",
+ value: "U+025B4"
+ },
+ {
+ entity: "uuarr;",
+ value: "U+021C8"
+ },
+ {
+ entity: "uuml;",
+ value: "U+000FC"
+ },
+ {
+ entity: "uuml",
+ value: "U+000FC"
+ },
+ {
+ entity: "uwangle;",
+ value: "U+029A7"
+ },
+ {
+ entity: "vArr;",
+ value: "U+021D5"
+ },
+ {
+ entity: "vBar;",
+ value: "U+02AE8"
+ },
+ {
+ entity: "vBarv;",
+ value: "U+02AE9"
+ },
+ {
+ entity: "vDash;",
+ value: "U+022A8"
+ },
+ {
+ entity: "vangrt;",
+ value: "U+0299C"
+ },
+ {
+ entity: "varepsilon;",
+ value: "U+003F5"
+ },
+ {
+ entity: "varkappa;",
+ value: "U+003F0"
+ },
+ {
+ entity: "varnothing;",
+ value: "U+02205"
+ },
+ {
+ entity: "varphi;",
+ value: "U+003D5"
+ },
+ {
+ entity: "varpi;",
+ value: "U+003D6"
+ },
+ {
+ entity: "varpropto;",
+ value: "U+0221D"
+ },
+ {
+ entity: "varr;",
+ value: "U+02195"
+ },
+ {
+ entity: "varrho;",
+ value: "U+003F1"
+ },
+ {
+ entity: "varsigma;",
+ value: "U+003C2"
+ },
+ {
+ entity: "vartheta;",
+ value: "U+003D1"
+ },
+ {
+ entity: "vartriangleleft;",
+ value: "U+022B2"
+ },
+ {
+ entity: "vartriangleright;",
+ value: "U+022B3"
+ },
+ {
+ entity: "vcy;",
+ value: "U+00432"
+ },
+ {
+ entity: "vdash;",
+ value: "U+022A2"
+ },
+ {
+ entity: "vee;",
+ value: "U+02228"
+ },
+ {
+ entity: "veebar;",
+ value: "U+022BB"
+ },
+ {
+ entity: "veeeq;",
+ value: "U+0225A"
+ },
+ {
+ entity: "vellip;",
+ value: "U+022EE"
+ },
+ {
+ entity: "verbar;",
+ value: "U+0007C"
+ },
+ {
+ entity: "vert;",
+ value: "U+0007C"
+ },
+ {
+ entity: "vfr;",
+ value: "U+1D533"
+ },
+ {
+ entity: "vltri;",
+ value: "U+022B2"
+ },
+ {
+ entity: "vopf;",
+ value: "U+1D567"
+ },
+ {
+ entity: "vprop;",
+ value: "U+0221D"
+ },
+ {
+ entity: "vrtri;",
+ value: "U+022B3"
+ },
+ {
+ entity: "vscr;",
+ value: "U+1D4CB"
+ },
+ {
+ entity: "vzigzag;",
+ value: "U+0299A"
+ },
+ {
+ entity: "wcirc;",
+ value: "U+00175"
+ },
+ {
+ entity: "wedbar;",
+ value: "U+02A5F"
+ },
+ {
+ entity: "wedge;",
+ value: "U+02227"
+ },
+ {
+ entity: "wedgeq;",
+ value: "U+02259"
+ },
+ {
+ entity: "weierp;",
+ value: "U+02118"
+ },
+ {
+ entity: "wfr;",
+ value: "U+1D534"
+ },
+ {
+ entity: "wopf;",
+ value: "U+1D568"
+ },
+ {
+ entity: "wp;",
+ value: "U+02118"
+ },
+ {
+ entity: "wr;",
+ value: "U+02240"
+ },
+ {
+ entity: "wreath;",
+ value: "U+02240"
+ },
+ {
+ entity: "wscr;",
+ value: "U+1D4CC"
+ },
+ {
+ entity: "xcap;",
+ value: "U+022C2"
+ },
+ {
+ entity: "xcirc;",
+ value: "U+025EF"
+ },
+ {
+ entity: "xcup;",
+ value: "U+022C3"
+ },
+ {
+ entity: "xdtri;",
+ value: "U+025BD"
+ },
+ {
+ entity: "xfr;",
+ value: "U+1D535"
+ },
+ {
+ entity: "xhArr;",
+ value: "U+027FA"
+ },
+ {
+ entity: "xharr;",
+ value: "U+027F7"
+ },
+ {
+ entity: "xi;",
+ value: "U+003BE"
+ },
+ {
+ entity: "xlArr;",
+ value: "U+027F8"
+ },
+ {
+ entity: "xlarr;",
+ value: "U+027F5"
+ },
+ {
+ entity: "xmap;",
+ value: "U+027FC"
+ },
+ {
+ entity: "xnis;",
+ value: "U+022FB"
+ },
+ {
+ entity: "xodot;",
+ value: "U+02A00"
+ },
+ {
+ entity: "xopf;",
+ value: "U+1D569"
+ },
+ {
+ entity: "xoplus;",
+ value: "U+02A01"
+ },
+ {
+ entity: "xotime;",
+ value: "U+02A02"
+ },
+ {
+ entity: "xrArr;",
+ value: "U+027F9"
+ },
+ {
+ entity: "xrarr;",
+ value: "U+027F6"
+ },
+ {
+ entity: "xscr;",
+ value: "U+1D4CD"
+ },
+ {
+ entity: "xsqcup;",
+ value: "U+02A06"
+ },
+ {
+ entity: "xuplus;",
+ value: "U+02A04"
+ },
+ {
+ entity: "xutri;",
+ value: "U+025B3"
+ },
+ {
+ entity: "xvee;",
+ value: "U+022C1"
+ },
+ {
+ entity: "xwedge;",
+ value: "U+022C0"
+ },
+ {
+ entity: "yacute;",
+ value: "U+000FD"
+ },
+ {
+ entity: "yacute",
+ value: "U+000FD"
+ },
+ {
+ entity: "yacy;",
+ value: "U+0044F"
+ },
+ {
+ entity: "ycirc;",
+ value: "U+00177"
+ },
+ {
+ entity: "ycy;",
+ value: "U+0044B"
+ },
+ {
+ entity: "yen;",
+ value: "U+000A5"
+ },
+ {
+ entity: "yen",
+ value: "U+000A5"
+ },
+ {
+ entity: "yfr;",
+ value: "U+1D536"
+ },
+ {
+ entity: "yicy;",
+ value: "U+00457"
+ },
+ {
+ entity: "yopf;",
+ value: "U+1D56A"
+ },
+ {
+ entity: "yscr;",
+ value: "U+1D4CE"
+ },
+ {
+ entity: "yucy;",
+ value: "U+0044E"
+ },
+ {
+ entity: "yuml;",
+ value: "U+000FF"
+ },
+ {
+ entity: "yuml",
+ value: "U+000FF"
+ },
+ {
+ entity: "zacute;",
+ value: "U+0017A"
+ },
+ {
+ entity: "zcaron;",
+ value: "U+0017E"
+ },
+ {
+ entity: "zcy;",
+ value: "U+00437"
+ },
+ {
+ entity: "zdot;",
+ value: "U+0017C"
+ },
+ {
+ entity: "zeetrf;",
+ value: "U+02128"
+ },
+ {
+ entity: "zeta;",
+ value: "U+003B6"
+ },
+ {
+ entity: "zfr;",
+ value: "U+1D537"
+ },
+ {
+ entity: "zhcy;",
+ value: "U+00436"
+ },
+ {
+ entity: "zigrarr;",
+ value: "U+021DD"
+ },
+ {
+ entity: "zopf;",
+ value: "U+1D56B"
+ },
+ {
+ entity: "zscr;",
+ value: "U+1D4CF"
+ },
+ {
+ entity: "zwj;",
+ value: "U+0200D"
+ },
+ {
+ entity: "zwnj;",
+ value: "U+0200C"
+ }
+]
diff --git a/WebCore/html/HTMLFormattingElementList.cpp b/WebCore/html/HTMLFormattingElementList.cpp
index 0198261..d71cc8c 100644
--- a/WebCore/html/HTMLFormattingElementList.cpp
+++ b/WebCore/html/HTMLFormattingElementList.cpp
@@ -31,49 +31,6 @@
namespace WebCore {
-HTMLFormattingElementList::Entry::Entry(Element* element)
- : m_element(element)
-{
- ASSERT(element);
-}
-
-HTMLFormattingElementList::Entry::Entry(MarkerEntryType)
-{
-}
-
-HTMLFormattingElementList::Entry::~Entry()
-{
-}
-
-bool HTMLFormattingElementList::Entry::isMarker() const
-{
- return !m_element;
-}
-
-Element* HTMLFormattingElementList::Entry::element() const
-{
- // The fact that !m_element == isMarker() is an implementation detail
- // callers should check isMarker() before calling element().
- ASSERT(m_element);
- return m_element.get();
-}
-
-void HTMLFormattingElementList::Entry::replaceElement(PassRefPtr<Element> element)
-{
- ASSERT(m_element); // Once a marker, always a marker.
- m_element = element;
-}
-
-bool HTMLFormattingElementList::Entry::operator==(const Entry& other) const
-{
- return element() == other.element();
-}
-
-bool HTMLFormattingElementList::Entry::operator!=(const Entry& other) const
-{
- return element() != other.element();
-}
-
HTMLFormattingElementList::HTMLFormattingElementList()
{
}
@@ -101,7 +58,7 @@ bool HTMLFormattingElementList::contains(Element* element)
HTMLFormattingElementList::Entry* HTMLFormattingElementList::find(Element* element)
{
- size_t index = m_entries.find(element);
+ size_t index = m_entries.reverseFind(element);
if (index != notFound) {
// This is somewhat of a hack, and is why this method can't be const.
return &m_entries[index];
@@ -109,6 +66,42 @@ HTMLFormattingElementList::Entry* HTMLFormattingElementList::find(Element* eleme
return 0;
}
+HTMLFormattingElementList::Bookmark HTMLFormattingElementList::bookmarkFor(Element* element)
+{
+ size_t index = m_entries.reverseFind(element);
+ ASSERT(index != notFound);
+ Element* elementBefore = (index > 1) ? m_entries[index - 1].element() : 0;
+ Element* elementAfter = (index < m_entries.size() - 1) ? m_entries[index + 1].element() : 0;
+ return Bookmark(elementBefore, elementAfter);
+}
+
+void HTMLFormattingElementList::insertAt(Element* element, const Bookmark& bookmark)
+{
+ size_t beforeIndex = notFound;
+ if (bookmark.elementBefore()) {
+ beforeIndex = m_entries.reverseFind(bookmark.elementBefore());
+ ASSERT(beforeIndex != notFound);
+ }
+ size_t afterIndex = notFound;
+ if (bookmark.elementAfter()) {
+ afterIndex = m_entries.reverseFind(bookmark.elementAfter());
+ ASSERT(afterIndex != notFound);
+ }
+
+ if (!bookmark.elementBefore()) {
+ if (bookmark.elementAfter())
+ ASSERT(!afterIndex);
+ m_entries.prepend(element);
+ } else {
+ if (bookmark.elementAfter()) {
+ // Bookmarks are not general purpose. They're only for the Adoption
+ // Agency. Assume the bookmarked element was already removed.
+ ASSERT(beforeIndex + 1 == afterIndex);
+ }
+ m_entries.insert(beforeIndex + 1, element);
+ }
+}
+
void HTMLFormattingElementList::append(Element* element)
{
m_entries.append(element);
@@ -116,7 +109,7 @@ void HTMLFormattingElementList::append(Element* element)
void HTMLFormattingElementList::remove(Element* element)
{
- size_t index = m_entries.find(element);
+ size_t index = m_entries.reverseFind(element);
if (index != notFound)
m_entries.remove(index);
}
@@ -132,4 +125,19 @@ void HTMLFormattingElementList::clearToLastMarker()
m_entries.removeLast();
}
+#ifndef NDEBUG
+
+void HTMLFormattingElementList::show()
+{
+ for (unsigned i = 1; i <= m_entries.size(); ++i) {
+ const Entry& entry = m_entries[m_entries.size() - i];
+ if (entry.isMarker())
+ fprintf(stderr, "marker\n");
+ else
+ entry.element()->showNode();
+ }
+}
+
+#endif
+
}
diff --git a/WebCore/html/HTMLFormattingElementList.h b/WebCore/html/HTMLFormattingElementList.h
index da30f75..6b41da4 100644
--- a/WebCore/html/HTMLFormattingElementList.h
+++ b/WebCore/html/HTMLFormattingElementList.h
@@ -46,22 +46,58 @@ public:
// access to Entry::isMarker() and Entry::replaceElement() to do so.
class Entry {
public:
- Entry(Element*);
+ // Inline because they're hot and Vector<T> uses them.
+ explicit Entry(Element* element)
+ : m_element(element)
+ {
+ ASSERT(element);
+ }
enum MarkerEntryType { MarkerEntry };
- Entry(MarkerEntryType);
- ~Entry();
+ Entry(MarkerEntryType)
+ : m_element(0)
+ {
+ }
+ ~Entry() {}
+
+ bool isMarker() const { return !m_element; }
+
+ Element* element() const
+ {
+ // The fact that !m_element == isMarker() is an implementation detail
+ // callers should check isMarker() before calling element().
+ ASSERT(m_element);
+ return m_element.get();
+ }
+ void replaceElement(PassRefPtr<Element> element) { m_element = element; }
+
+ // Needed for use with Vector. These are super-hot and must be inline.
+ bool operator==(Element* element) const { return m_element == element; }
+ bool operator!=(Element* element) const { return m_element != element; }
- bool isMarker() const;
+ private:
+ RefPtr<Element> m_element;
+ };
+
+ class Bookmark {
+ public:
+ Bookmark(Element* before, Element* after)
+ : m_before(before)
+ , m_after(after)
+ {
+ }
- Element* element() const;
- void replaceElement(PassRefPtr<Element>);
+ void moveToAfter(Element* before)
+ {
+ m_before = before;
+ m_after = 0;
+ }
- // Needed for use with Vector.
- bool operator==(const Entry&) const;
- bool operator!=(const Entry&) const;
+ Element* elementBefore() const { return m_before; }
+ Element* elementAfter() const { return m_after; }
private:
- RefPtr<Element> m_element;
+ Element* m_before;
+ Element* m_after;
};
bool isEmpty() const { return !size(); }
@@ -74,11 +110,18 @@ public:
void append(Element*);
void remove(Element*);
+ Bookmark bookmarkFor(Element*);
+ void insertAt(Element*, const Bookmark&);
+
void appendMarker();
void clearToLastMarker();
- const Entry& operator[](size_t i) const { return m_entries[i]; }
- Entry& operator[](size_t i) { return m_entries[i]; }
+ const Entry& at(size_t i) const { return m_entries[i]; }
+ Entry& at(size_t i) { return m_entries[i]; }
+
+#ifndef NDEBUG
+ void show();
+#endif
private:
Vector<Entry> m_entries;
diff --git a/WebCore/html/HTMLFrameElement.idl b/WebCore/html/HTMLFrameElement.idl
index f1451f5..4a5268c 100644
--- a/WebCore/html/HTMLFrameElement.idl
+++ b/WebCore/html/HTMLFrameElement.idl
@@ -29,7 +29,7 @@ module html {
attribute [Reflect] DOMString name;
attribute [Reflect] boolean noResize;
attribute [Reflect] DOMString scrolling;
- attribute [ReflectURL] DOMString src;
+ attribute [Reflect,URL] DOMString src;
// Introduced in DOM Level 2:
readonly attribute [CheckFrameSecurity] Document contentDocument;
diff --git a/WebCore/html/HTMLImageElement.idl b/WebCore/html/HTMLImageElement.idl
index 0fc7271..1bf8a28 100644
--- a/WebCore/html/HTMLImageElement.idl
+++ b/WebCore/html/HTMLImageElement.idl
@@ -30,15 +30,15 @@ module html {
attribute long height;
attribute [Reflect] long hspace;
attribute [Reflect] boolean isMap;
- attribute [ReflectURL=longdesc] DOMString longDesc;
- attribute [ReflectURL] DOMString src;
+ attribute [Reflect,URL] DOMString longDesc;
+ attribute [Reflect,URL] DOMString src;
attribute [Reflect] DOMString useMap;
attribute [Reflect] long vspace;
attribute long width;
// Extensions
readonly attribute boolean complete;
- attribute [ReflectURL] DOMString lowsrc;
+ attribute [Reflect,URL] DOMString lowsrc;
readonly attribute long naturalHeight;
readonly attribute long naturalWidth;
readonly attribute long x;
diff --git a/WebCore/html/HTMLInputElement.cpp b/WebCore/html/HTMLInputElement.cpp
index d6136d8..8502814 100644
--- a/WebCore/html/HTMLInputElement.cpp
+++ b/WebCore/html/HTMLInputElement.cpp
@@ -871,7 +871,7 @@ void HTMLInputElement::setInputType(const String& t)
registerForActivationCallbackIfNeeded();
if (didRespectHeightAndWidth != willRespectHeightAndWidth) {
- NamedNodeMap* map = mappedAttributes();
+ NamedNodeMap* map = attributeMap();
ASSERT(map);
if (Attribute* height = map->getAttributeItem(heightAttr))
attributeChanged(height, false);
diff --git a/WebCore/html/HTMLInputElement.h b/WebCore/html/HTMLInputElement.h
index 6791fa2..b055e73 100644
--- a/WebCore/html/HTMLInputElement.h
+++ b/WebCore/html/HTMLInputElement.h
@@ -124,6 +124,9 @@ public:
virtual void setValue(const String&, bool sendChangeEvent = false);
virtual void setValueForUser(const String&);
+ virtual const String& suggestedValue() const;
+ void setSuggestedValue(const String&);
+
double valueAsDate() const;
void setValueAsDate(double, ExceptionCode&);
@@ -239,9 +242,6 @@ private:
virtual const AtomicString& formControlType() const;
- virtual const String& suggestedValue() const;
- void setSuggestedValue(const String&);
-
virtual bool searchEventsShouldBeDispatched() const;
virtual bool saveFormControlState(String& value) const;
diff --git a/WebCore/html/HTMLInputElement.idl b/WebCore/html/HTMLInputElement.idl
index 9b6bbbf..b93f05c 100644
--- a/WebCore/html/HTMLInputElement.idl
+++ b/WebCore/html/HTMLInputElement.idl
@@ -51,7 +51,7 @@ module html {
// FIXME: The spec says this should be a long, not an unsigned long.
attribute unsigned long size; // Changed string -> long as part of DOM level 2
#endif
- attribute [ReflectURL] DOMString src;
+ attribute [Reflect,URL] DOMString src;
attribute [Reflect] DOMString step;
attribute [ConvertNullToNullString, JSCCustomGetter] DOMString type; // readonly dropped as part of DOM level 2
attribute [Reflect] DOMString useMap;
diff --git a/WebCore/html/HTMLLinkElement.cpp b/WebCore/html/HTMLLinkElement.cpp
index eff250a..bad236a 100644
--- a/WebCore/html/HTMLLinkElement.cpp
+++ b/WebCore/html/HTMLLinkElement.cpp
@@ -147,10 +147,13 @@ void HTMLLinkElement::tokenizeRelAttribute(const AtomicString& rel, RelAttribute
#if ENABLE(LINK_PREFETCH)
relAttribute.m_isLinkPrefetch = false;
#endif
+<<<<<<< HEAD
#ifdef ANDROID_APPLE_TOUCH_ICON
relAttribute.m_isTouchIcon = false;
relAttribute.m_isPrecomposedTouchIcon = false;
#endif
+=======
+>>>>>>> webkit.org at r63173
if (equalIgnoringCase(rel, "stylesheet"))
relAttribute.m_isStyleSheet = true;
else if (equalIgnoringCase(rel, "icon") || equalIgnoringCase(rel, "shortcut icon"))
diff --git a/WebCore/html/HTMLLinkElement.h b/WebCore/html/HTMLLinkElement.h
index 8fb93ba..cc8d2d1 100644
--- a/WebCore/html/HTMLLinkElement.h
+++ b/WebCore/html/HTMLLinkElement.h
@@ -41,10 +41,13 @@ public:
bool m_isIcon;
bool m_isAlternate;
bool m_isDNSPrefetch;
+<<<<<<< HEAD
#ifdef ANDROID_APPLE_TOUCH_ICON
bool m_isTouchIcon;
bool m_isPrecomposedTouchIcon;
#endif
+=======
+>>>>>>> webkit.org at r63173
#if ENABLE(LINK_PREFETCH)
bool m_isLinkPrefetch;
#endif
@@ -57,7 +60,12 @@ public:
#if ENABLE(LINK_PREFETCH)
, m_isLinkPrefetch(false)
#endif
+<<<<<<< HEAD
{ };
+=======
+ {
+ }
+>>>>>>> webkit.org at r63173
};
static PassRefPtr<HTMLLinkElement> create(const QualifiedName&, Document*, bool createdByParser);
diff --git a/WebCore/html/HTMLLinkElement.idl b/WebCore/html/HTMLLinkElement.idl
index a7e7d32..dfec24b 100644
--- a/WebCore/html/HTMLLinkElement.idl
+++ b/WebCore/html/HTMLLinkElement.idl
@@ -23,7 +23,7 @@ module html {
interface HTMLLinkElement : HTMLElement {
attribute [Reflect] boolean disabled;
attribute [Reflect] DOMString charset;
- attribute [ReflectURL] DOMString href;
+ attribute [Reflect,URL] DOMString href;
attribute [Reflect] DOMString hreflang;
attribute [Reflect] DOMString media;
attribute [Reflect] DOMString rel;
diff --git a/WebCore/html/HTMLMediaElement.cpp b/WebCore/html/HTMLMediaElement.cpp
index fb024e0..b83d1cb 100644
--- a/WebCore/html/HTMLMediaElement.cpp
+++ b/WebCore/html/HTMLMediaElement.cpp
@@ -424,7 +424,7 @@ PassRefPtr<MediaError> HTMLMediaElement::error() const
KURL HTMLMediaElement::src() const
{
- return document()->completeURL(getAttribute(srcAttr));
+ return getNonEmptyURLAttribute(srcAttr);
}
void HTMLMediaElement::setSrc(const String& url)
@@ -545,14 +545,16 @@ void HTMLMediaElement::loadInternal()
void HTMLMediaElement::selectMediaResource()
{
+ enum Mode { attribute, children };
+ Mode mode = attribute;
+
// 1 - Set the networkState to NETWORK_NO_SOURCE
m_networkState = NETWORK_NO_SOURCE;
// 2 - Asynchronously await a stable state.
// 3 - ... the media element has neither a src attribute ...
- String mediaSrc = getAttribute(srcAttr);
- if (!mediaSrc) {
+ if (!hasAttribute(srcAttr)) {
// ... nor a source element child: ...
Node* node;
for (node = firstChild(); node; node = node->nextSibling()) {
@@ -568,6 +570,8 @@ void HTMLMediaElement::selectMediaResource()
ASSERT(!m_delayingTheLoadEvent);
return;
}
+
+ mode = children;
}
// 4
@@ -577,11 +581,17 @@ void HTMLMediaElement::selectMediaResource()
// 5
scheduleEvent(eventNames().loadstartEvent);
- // 6 - If the media element has a src attribute, then run these substeps
- ContentType contentType("");
- if (!mediaSrc.isNull()) {
- KURL mediaURL = document()->completeURL(mediaSrc);
+ // 6 - If mode is attribute, then run these substeps
+ if (mode == attribute) {
+ // If the src attribute's value is the empty string ... jump down to the failed step below
+ KURL mediaURL = getNonEmptyURLAttribute(srcAttr);
+ if (mediaURL.isEmpty()) {
+ noneSupported();
+ return;
+ }
+
if (isSafeToLoadURL(mediaURL, Complain) && dispatchBeforeLoadEvent(mediaURL.string())) {
+ ContentType contentType("");
m_loadState = LoadingFromSrcAttr;
loadResource(mediaURL, contentType);
} else
@@ -1474,9 +1484,12 @@ KURL HTMLMediaElement::selectNextSourceChild(ContentType *contentType, InvalidSo
}
HTMLSourceElement* source = static_cast<HTMLSourceElement*>(node);
- if (!source->hasAttribute(srcAttr))
- goto check_again;
+ // If candidate does not have a src attribute, or if its src attribute's value is the empty string ... jump down to the failed step below
+ mediaURL = source->getNonEmptyURLAttribute(srcAttr);
+ if (mediaURL.isEmpty())
+ goto check_again;
+
if (source->hasAttribute(mediaAttr)) {
MediaQueryEvaluator screenEval("screen", document()->frame(), renderer() ? renderer()->style() : 0);
RefPtr<MediaList> media = MediaList::createAllowingDescriptionSyntax(source->media());
@@ -1490,7 +1503,6 @@ KURL HTMLMediaElement::selectNextSourceChild(ContentType *contentType, InvalidSo
}
// Is it safe to load this url?
- mediaURL = source->src();
if (!isSafeToLoadURL(mediaURL, actionIfInvalid) || !dispatchBeforeLoadEvent(mediaURL.string()))
goto check_again;
diff --git a/WebCore/html/HTMLMediaElement.idl b/WebCore/html/HTMLMediaElement.idl
index 93430b4..baea577 100644
--- a/WebCore/html/HTMLMediaElement.idl
+++ b/WebCore/html/HTMLMediaElement.idl
@@ -30,7 +30,7 @@ interface [Conditional=VIDEO] HTMLMediaElement : HTMLElement {
readonly attribute MediaError error;
// network state
- attribute [ReflectURL] DOMString src;
+ attribute [Reflect,NonEmpty,URL] DOMString src;
readonly attribute DOMString currentSrc;
const unsigned short NETWORK_EMPTY = 0;
diff --git a/WebCore/html/HTMLObjectElement.cpp b/WebCore/html/HTMLObjectElement.cpp
index 0724ce6..d4bccc3 100644
--- a/WebCore/html/HTMLObjectElement.cpp
+++ b/WebCore/html/HTMLObjectElement.cpp
@@ -154,12 +154,6 @@ void HTMLObjectElement::attach()
if (!m_imageLoader)
m_imageLoader.set(new HTMLImageLoader(this));
m_imageLoader->updateFromElement();
- // updateForElement() may have changed us to use fallback content and called detach() and attach().
- if (m_useFallbackContent)
- return;
-
- if (renderer())
- toRenderImage(renderer())->setCachedImage(m_imageLoader->image());
}
}
diff --git a/WebCore/html/HTMLObjectElement.idl b/WebCore/html/HTMLObjectElement.idl
index ee0f1c6..e4d85b3 100644
--- a/WebCore/html/HTMLObjectElement.idl
+++ b/WebCore/html/HTMLObjectElement.idl
@@ -32,7 +32,7 @@ module html {
attribute [Reflect] DOMString border;
attribute [Reflect] DOMString codeBase;
attribute [Reflect] DOMString codeType;
- attribute [ReflectURL] DOMString data;
+ attribute [Reflect,URL] DOMString data;
attribute [Reflect] boolean declare;
attribute [Reflect] DOMString height;
attribute [Reflect] long hspace;
diff --git a/WebCore/html/HTMLPlugInElement.cpp b/WebCore/html/HTMLPlugInElement.cpp
index ffc6b64..7737dc4 100644
--- a/WebCore/html/HTMLPlugInElement.cpp
+++ b/WebCore/html/HTMLPlugInElement.cpp
@@ -51,6 +51,7 @@ HTMLPlugInElement::HTMLPlugInElement(const QualifiedName& tagName, Document* doc
: HTMLFrameOwnerElement(tagName, doc)
#if ENABLE(NETSCAPE_PLUGIN_API)
, m_NPObject(0)
+ , m_isCapturingMouseEvents(false)
#endif
{
}
@@ -70,6 +71,13 @@ HTMLPlugInElement::~HTMLPlugInElement()
void HTMLPlugInElement::detach()
{
m_instance.clear();
+
+ if (m_isCapturingMouseEvents) {
+ if (Frame* frame = document()->frame())
+ frame->eventHandler()->setCapturingMouseEventsNode(0);
+ m_isCapturingMouseEvents = false;
+ }
+
HTMLFrameOwnerElement::detach();
}
@@ -142,14 +150,7 @@ void HTMLPlugInElement::defaultEventHandler(Event* event)
RenderObject* r = renderer();
if (r && r->isEmbeddedObject() && toRenderEmbeddedObject(r)->showsMissingPluginIndicator()) {
- if (event->type() != eventNames().clickEvent)
- return;
-
- Page* page = document()->page();
- if (!page)
- return;
-
- page->chrome()->client()->missingPluginButtonClicked(this);
+ toRenderEmbeddedObject(r)->handleMissingPluginIndicatorEvent(event);
return;
}
diff --git a/WebCore/html/HTMLPlugInElement.h b/WebCore/html/HTMLPlugInElement.h
index 525dc40..e4f3474 100644
--- a/WebCore/html/HTMLPlugInElement.h
+++ b/WebCore/html/HTMLPlugInElement.h
@@ -44,6 +44,9 @@ public:
NPObject* getNPObject();
#endif
+ bool isCapturingMouseEvents() const { return m_isCapturingMouseEvents; }
+ void setIsCapturingMouseEvents(bool capturing) { m_isCapturingMouseEvents = capturing; }
+
protected:
HTMLPlugInElement(const QualifiedName& tagName, Document*);
@@ -78,6 +81,7 @@ private:
#if ENABLE(NETSCAPE_PLUGIN_API)
NPObject* m_NPObject;
#endif
+ bool m_isCapturingMouseEvents;
};
} // namespace WebCore
diff --git a/WebCore/html/HTMLScriptElement.idl b/WebCore/html/HTMLScriptElement.idl
index 399b5cd..6b7c86d 100644
--- a/WebCore/html/HTMLScriptElement.idl
+++ b/WebCore/html/HTMLScriptElement.idl
@@ -26,7 +26,7 @@ module html {
attribute [Reflect] DOMString charset;
attribute [Reflect] boolean async;
attribute [Reflect] boolean defer;
- attribute [ReflectURL] DOMString src;
+ attribute [Reflect,URL] DOMString src;
attribute [Reflect] DOMString type;
};
}
diff --git a/WebCore/html/HTMLSourceElement.cpp b/WebCore/html/HTMLSourceElement.cpp
index f6ffd9f..2c83fed 100644
--- a/WebCore/html/HTMLSourceElement.cpp
+++ b/WebCore/html/HTMLSourceElement.cpp
@@ -64,7 +64,7 @@ void HTMLSourceElement::insertedIntoDocument()
KURL HTMLSourceElement::src() const
{
- return document()->completeURL(getAttribute(srcAttr));
+ return getNonEmptyURLAttribute(srcAttr);
}
void HTMLSourceElement::setSrc(const String& url)
@@ -110,5 +110,11 @@ void HTMLSourceElement::errorEventTimerFired(Timer<HTMLSourceElement>*)
dispatchEvent(Event::create(eventNames().errorEvent, false, true));
}
+bool HTMLSourceElement::isURLAttribute(Attribute* attribute) const
+{
+ return attribute->name() == srcAttr;
+}
+
}
+
#endif
diff --git a/WebCore/html/HTMLSourceElement.h b/WebCore/html/HTMLSourceElement.h
index e11c9d0..6cca64e 100644
--- a/WebCore/html/HTMLSourceElement.h
+++ b/WebCore/html/HTMLSourceElement.h
@@ -54,7 +54,8 @@ private:
virtual int tagPriority() const { return 0; }
virtual void insertedIntoDocument();
-
+ virtual bool isURLAttribute(Attribute*) const;
+
void errorEventTimerFired(Timer<HTMLSourceElement>*);
Timer<HTMLSourceElement> m_errorEventTimer;
diff --git a/WebCore/html/HTMLSourceElement.idl b/WebCore/html/HTMLSourceElement.idl
index 863e180..f7229f1 100644
--- a/WebCore/html/HTMLSourceElement.idl
+++ b/WebCore/html/HTMLSourceElement.idl
@@ -25,7 +25,7 @@
module html {
interface [Conditional=VIDEO] HTMLSourceElement : HTMLElement {
- attribute DOMString src;
+ attribute [Reflect,NonEmpty,URL] DOMString src;
attribute DOMString type;
attribute DOMString media;
};
diff --git a/WebCore/html/HTMLStyleElement.cpp b/WebCore/html/HTMLStyleElement.cpp
index 79bafe6..4fa08ad 100644
--- a/WebCore/html/HTMLStyleElement.cpp
+++ b/WebCore/html/HTMLStyleElement.cpp
@@ -27,6 +27,7 @@
#include "Attribute.h"
#include "Document.h"
#include "HTMLNames.h"
+#include "ScriptableDocumentParser.h"
#include "ScriptEventListener.h"
namespace WebCore {
@@ -37,8 +38,11 @@ inline HTMLStyleElement::HTMLStyleElement(const QualifiedName& tagName, Document
: HTMLElement(tagName, document)
, m_loading(false)
, m_createdByParser(createdByParser)
+ , m_startLineNumber(0)
{
ASSERT(hasTagName(styleTag));
+ if (createdByParser && document && document->scriptableDocumentParser())
+ m_startLineNumber = document->scriptableDocumentParser()->lineNumber();
}
PassRefPtr<HTMLStyleElement> HTMLStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser)
@@ -58,7 +62,7 @@ void HTMLStyleElement::parseMappedAttribute(Attribute* attr)
void HTMLStyleElement::finishParsingChildren()
{
- StyleElement::process(this);
+ StyleElement::process(this, m_startLineNumber);
StyleElement::sheet(this);
m_createdByParser = false;
HTMLElement::finishParsingChildren();
@@ -83,7 +87,7 @@ void HTMLStyleElement::removedFromDocument()
void HTMLStyleElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
{
if (!changedByParser)
- StyleElement::process(this);
+ StyleElement::process(this, 0);
HTMLElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
}
diff --git a/WebCore/html/HTMLStyleElement.h b/WebCore/html/HTMLStyleElement.h
index 0f8a83b..10f5b10 100644
--- a/WebCore/html/HTMLStyleElement.h
+++ b/WebCore/html/HTMLStyleElement.h
@@ -65,6 +65,7 @@ private:
bool m_loading;
bool m_createdByParser;
+ int m_startLineNumber;
};
} //namespace
diff --git a/WebCore/html/HTMLToken.h b/WebCore/html/HTMLToken.h
index 741f5cd..c2db87d 100644
--- a/WebCore/html/HTMLToken.h
+++ b/WebCore/html/HTMLToken.h
@@ -28,6 +28,7 @@
#include "NamedNodeMap.h"
#include <wtf/Noncopyable.h>
+#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
@@ -173,6 +174,12 @@ public:
return m_selfClosing;
}
+ void setSelfClosing()
+ {
+ ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag);
+ m_selfClosing = true;
+ }
+
const AttributeList& attributes() const
{
ASSERT(m_type == StartTag || m_type == EndTag);
@@ -306,7 +313,7 @@ public:
break;
case HTMLToken::DOCTYPE:
m_name = AtomicString(token.name().data(), token.name().size());
- m_doctypeData.set(token.m_doctypeData.release());
+ m_doctypeData = token.m_doctypeData.release();
break;
case HTMLToken::EndOfFile:
break;
@@ -337,9 +344,17 @@ public:
}
}
- AtomicHTMLToken(HTMLToken::Type type, AtomicString name)
+ AtomicHTMLToken(HTMLToken::Type type, AtomicString name, PassRefPtr<NamedNodeMap> attributes = 0)
: m_type(type)
, m_name(name)
+ , m_attributes(attributes)
+ {
+ ASSERT(usesName());
+ }
+
+ explicit AtomicHTMLToken(const String& characters)
+ : m_type(HTMLToken::Character)
+ , m_data(characters)
{
}
@@ -347,13 +362,13 @@ public:
const AtomicString& name() const
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE);
+ ASSERT(usesName());
return m_name;
}
void setName(const AtomicString& name)
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE);
+ ASSERT(usesName());
m_name = name;
}
@@ -363,12 +378,26 @@ public:
return m_selfClosing;
}
+ Attribute* getAttributeItem(const QualifiedName& attributeName)
+ {
+ ASSERT(usesAttributes());
+ if (!m_attributes)
+ return 0;
+ return m_attributes->getAttributeItem(attributeName);
+ }
+
NamedNodeMap* attributes() const
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag);
+ ASSERT(usesAttributes());
return m_attributes.get();
}
+ PassRefPtr<NamedNodeMap> takeAtributes()
+ {
+ ASSERT(usesAttributes());
+ return m_attributes.release();
+ }
+
const String& characters() const
{
ASSERT(m_type == HTMLToken::Character);
@@ -404,6 +433,16 @@ public:
private:
HTMLToken::Type m_type;
+ bool usesName() const
+ {
+ return m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE;
+ }
+
+ bool usesAttributes() const
+ {
+ return m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag;
+ }
+
// "name" for DOCTYPE, StartTag, and EndTag
AtomicString m_name;
diff --git a/WebCore/html/HTMLTokenizer.cpp b/WebCore/html/HTMLTokenizer.cpp
index 54e604a..55fd1ca 100644
--- a/WebCore/html/HTMLTokenizer.cpp
+++ b/WebCore/html/HTMLTokenizer.cpp
@@ -274,8 +274,13 @@ bool HTMLTokenizer::nextToken(SegmentedString& source, HTMLToken& token)
// without getting an extra newline at the start of their <pre> element.
if (m_skipLeadingNewLineForListing) {
m_skipLeadingNewLineForListing = false;
- if (m_state == DataState && cc == '\n')
- ADVANCE_TO(DataState);
+ if (cc == '\n') {
+ if (m_state == DataState)
+ ADVANCE_TO(DataState);
+ if (m_state == RCDATAState)
+ ADVANCE_TO(RCDATAState);
+ ASSERT_NOT_REACHED();
+ }
}
// Source: http://www.whatwg.org/specs/web-apps/current-work/#tokenisation0
@@ -1045,7 +1050,7 @@ bool HTMLTokenizer::nextToken(SegmentedString& source, HTMLToken& token)
BEGIN_STATE(SelfClosingStartTagState) {
if (cc == '>') {
- notImplemented();
+ m_token->setSelfClosing();
return emitAndResumeIn(source, DataState);
} else if (cc == InputStreamPreprocessor::endOfFileMarker) {
parseError();
diff --git a/WebCore/html/HTMLTreeBuilder.cpp b/WebCore/html/HTMLTreeBuilder.cpp
index b4e7ce1..80d4530 100644
--- a/WebCore/html/HTMLTreeBuilder.cpp
+++ b/WebCore/html/HTMLTreeBuilder.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"
@@ -40,13 +40,16 @@
#include "HTMLTokenizer.h"
#include "LegacyHTMLDocumentParser.h"
#include "LegacyHTMLTreeBuilder.h"
+#include "LocalizedStrings.h"
+#include "MathMLNames.h"
#include "NotImplemented.h"
-#if ENABLE(SVG)
#include "SVGNames.h"
-#endif
#include "ScriptController.h"
#include "Settings.h"
#include "Text.h"
+#include "XLinkNames.h"
+#include "XMLNSNames.h"
+#include "XMLNames.h"
#include <wtf/UnusedParam.h>
namespace WebCore {
@@ -57,11 +60,93 @@ static const int uninitializedLineNumberValue = -1;
namespace {
-inline bool isTreeBuilderWhiteSpace(UChar cc)
+inline bool isTreeBuilderWhitepace(UChar cc)
{
return cc == '\t' || cc == '\x0A' || cc == '\x0C' || cc == '\x0D' || cc == ' ';
}
+class ExternalCharacterTokenBuffer : public Noncopyable {
+public:
+ explicit ExternalCharacterTokenBuffer(AtomicHTMLToken& token)
+ : m_current(token.characters().characters())
+ , m_end(m_current + token.characters().length())
+ {
+ ASSERT(!isEmpty());
+ }
+
+ ~ExternalCharacterTokenBuffer()
+ {
+ ASSERT(isEmpty());
+ }
+
+ bool isEmpty() const { return m_current == m_end; }
+
+ void skipLeadingWhitespace()
+ {
+ ASSERT(!isEmpty());
+ while (isTreeBuilderWhitepace(*m_current)) {
+ if (++m_current == m_end)
+ return;
+ }
+ }
+
+ String takeLeadingWhitespace()
+ {
+ ASSERT(!isEmpty());
+ const UChar* start = m_current;
+ skipLeadingWhitespace();
+ if (start == m_current)
+ return String();
+ return String(start, m_current - start);
+ }
+
+ String takeRemaining()
+ {
+ ASSERT(!isEmpty());
+ const UChar* start = m_current;
+ m_current = m_end;
+ return String(start, m_current - start);
+ }
+
+ void giveRemainingTo(Vector<UChar>& recipient)
+ {
+ recipient.append(m_current, m_end - m_current);
+ m_current = m_end;
+ }
+
+ String takeRemainingWhitespace()
+ {
+ ASSERT(!isEmpty());
+ Vector<UChar> whitespace;
+ do {
+ UChar cc = *m_current++;
+ if (isTreeBuilderWhitepace(cc))
+ whitespace.append(cc);
+ } while (m_current < m_end);
+ // Returning the null string when there aren't any whitespace
+ // characters is slightly cleaner semantically because we don't want
+ // to insert a text node (as opposed to inserting an empty text node).
+ if (whitespace.isEmpty())
+ return String();
+ return String::adopt(whitespace);
+ }
+
+private:
+ const UChar* m_current;
+ const UChar* m_end;
+};
+
+inline bool hasNonWhitespace(const String& string)
+{
+ const UChar* characters = string.characters();
+ const unsigned length = string.length();
+ for (unsigned i = 0; i < length; ++i) {
+ if (!isTreeBuilderWhitepace(characters[i]))
+ return true;
+ }
+ return false;
+}
+
bool shouldUseLegacyTreeBuilder(Document* document)
{
return !document->settings() || !document->settings()->html5TreeBuilderEnabled();
@@ -77,6 +162,18 @@ bool isNumberedHeaderTag(const AtomicString& tagName)
|| tagName == h6Tag;
}
+bool isCaptionColOrColgroupTag(const AtomicString& tagName)
+{
+ return tagName == captionTag
+ || tagName == colTag
+ || tagName == colgroupTag;
+}
+
+bool isTableCellContextTag(const AtomicString& tagName)
+{
+ return tagName == thTag || tagName == tdTag;
+}
+
bool isTableBodyContextTag(const AtomicString& tagName)
{
return tagName == tbodyTag
@@ -158,18 +255,15 @@ bool isScopingTag(const AtomicString& tagName)
return tagName == appletTag
|| tagName == buttonTag
|| tagName == captionTag
-#if ENABLE(SVG_FOREIGN_OBJECT)
|| tagName == SVGNames::foreignObjectTag
-#endif
|| tagName == htmlTag
|| tagName == marqueeTag
|| tagName == objectTag
|| tagName == tableTag
- || tagName == tdTag
- || tagName == thTag;
+ || isTableCellContextTag(tagName);
}
-bool isNonAnchorFormattingTag(const AtomicString& tagName)
+bool isNonAnchorNonNobrFormattingTag(const AtomicString& tagName)
{
return tagName == bTag
|| tagName == bigTag
@@ -177,7 +271,6 @@ bool isNonAnchorFormattingTag(const AtomicString& tagName)
|| tagName == emTag
|| tagName == fontTag
|| tagName == iTag
- || tagName == nobrTag
|| tagName == sTag
|| tagName == smallTag
|| tagName == strikeTag
@@ -186,6 +279,19 @@ bool isNonAnchorFormattingTag(const AtomicString& tagName)
|| tagName == uTag;
}
+bool isNonAnchorFormattingTag(const AtomicString& tagName)
+{
+ return tagName == nobrTag
+ || isNonAnchorNonNobrFormattingTag(tagName);
+}
+
+bool requiresRedirectToFosterParent(Element* element)
+{
+ return element->hasTagName(tableTag)
+ || isTableBodyContextTag(element->localName())
+ || element->hasTagName(trTag);
+}
+
// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#formatting
bool isFormattingTag(const AtomicString& tagName)
{
@@ -198,15 +304,27 @@ bool isPhrasingTag(const AtomicString& tagName)
return !isSpecialTag(tagName) && !isScopingTag(tagName) && !isFormattingTag(tagName);
}
+bool isNotFormattingAndNotPhrasing(const Element* element)
+{
+ // The spec often says "node is not in the formatting category, and is not
+ // in the phrasing category". !phrasing && !formatting == scoping || special
+ // scoping || special is easier to compute.
+ // FIXME: localName() is wrong for non-html content.
+ const AtomicString& tagName = element->localName();
+ return isScopingTag(tagName) || isSpecialTag(tagName);
+}
+
} // namespace
HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* document, bool reportErrors)
: m_framesetOk(true)
, m_document(document)
+ , m_tree(document, FragmentScriptingAllowed)
, m_reportErrors(reportErrors)
, m_isPaused(false)
, m_insertionMode(InitialMode)
, m_originalInsertionMode(InitialMode)
+ , m_secondaryInsertionMode(InitialMode)
, m_tokenizer(tokenizer)
, m_legacyTreeBuilder(shouldUseLegacyTreeBuilder(document) ? new LegacyHTMLTreeBuilder(document, reportErrors) : 0)
, m_lastScriptElementStartLine(uninitializedLineNumberValue)
@@ -221,10 +339,12 @@ HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* documen
HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, DocumentFragment* fragment, FragmentScriptingPermission scriptingPermission)
: m_framesetOk(true)
, m_document(fragment->document())
+ , m_tree(fragment->document(), scriptingPermission)
, m_reportErrors(false) // FIXME: Why not report errors in fragments?
, m_isPaused(false)
, m_insertionMode(InitialMode)
, m_originalInsertionMode(InitialMode)
+ , m_secondaryInsertionMode(InitialMode)
, m_tokenizer(tokenizer)
, m_legacyTreeBuilder(new LegacyHTMLTreeBuilder(fragment, scriptingPermission))
, m_lastScriptElementStartLine(uninitializedLineNumberValue)
@@ -238,7 +358,7 @@ HTMLTreeBuilder::~HTMLTreeBuilder()
{
}
-static void convertToOldStyle(const AtomicHTMLToken& token, Token& oldStyleToken)
+static void convertToOldStyle(AtomicHTMLToken& token, Token& oldStyleToken)
{
switch (token.type()) {
case HTMLToken::Uninitialized:
@@ -252,9 +372,12 @@ static void convertToOldStyle(const AtomicHTMLToken& token, Token& oldStyleToken
case HTMLToken::StartTag:
case HTMLToken::EndTag: {
oldStyleToken.beginTag = (token.type() == HTMLToken::StartTag);
- oldStyleToken.selfClosingTag = token.selfClosing();
+ // The LegacyHTMLTreeBuilder seems to work better if we lie here and
+ // say that tags are never self closing. As a wise man once said:
+ // "You can't handle the truth!"
+ oldStyleToken.selfClosingTag = false;
oldStyleToken.tagName = token.name();
- oldStyleToken.attrs = token.attributes();
+ oldStyleToken.attrs = token.takeAtributes();
break;
}
case HTMLToken::Comment:
@@ -306,8 +429,12 @@ HTMLTokenizer::State HTMLTreeBuilder::adjustedLexerState(HTMLTokenizer::State st
if (tagName == textareaTag || tagName == titleTag)
return HTMLTokenizer::RCDATAState;
- if (tagName == styleTag || tagName == iframeTag || tagName == xmpTag || tagName == noembedTag
- || tagName == noframesTag || (tagName == noscriptTag && isScriptingFlagEnabled(frame)))
+ if (tagName == styleTag
+ || tagName == iframeTag
+ || tagName == xmpTag
+ || tagName == noembedTag
+ || tagName == noframesTag
+ || (tagName == noscriptTag && isScriptingFlagEnabled(frame)))
return HTMLTokenizer::RAWTEXTState;
if (tagName == plaintextTag)
@@ -409,49 +536,645 @@ void HTMLTreeBuilder::processToken(AtomicHTMLToken& token)
void HTMLTreeBuilder::processDoctypeToken(AtomicHTMLToken& token)
{
- if (insertionMode() == InitialMode) {
- insertDoctype(token);
+ ASSERT(token.type() == HTMLToken::DOCTYPE);
+ if (m_insertionMode == InitialMode) {
+ m_tree.insertDoctype(token);
+ return;
+ }
+ if (m_insertionMode == InTableTextMode) {
+ processDefaultForInTableTextMode(token);
+ processDoctypeToken(token);
return;
}
parseError(token);
}
-void HTMLTreeBuilder::insertHTMLStartTagBeforeHTML(AtomicHTMLToken& token)
+void HTMLTreeBuilder::processFakeStartTag(const QualifiedName& tagName, PassRefPtr<NamedNodeMap> attributes)
+{
+ // FIXME: We'll need a fancier conversion than just "localName" for SVG/MathML tags.
+ AtomicHTMLToken fakeToken(HTMLToken::StartTag, tagName.localName(), attributes);
+ processStartTag(fakeToken);
+}
+
+void HTMLTreeBuilder::processFakeEndTag(const QualifiedName& tagName)
{
- RefPtr<Element> element = HTMLHtmlElement::create(m_document);
- element->setAttributeMap(token.attributes(), m_fragmentScriptingPermission);
- m_openElements.pushHTMLHtmlElement(attach(m_document, element.release()));
+ // FIXME: We'll need a fancier conversion than just "localName" for SVG/MathML tags.
+ AtomicHTMLToken fakeToken(HTMLToken::EndTag, tagName.localName());
+ processEndTag(fakeToken);
}
-void HTMLTreeBuilder::mergeAttributesFromTokenIntoElement(AtomicHTMLToken& token, Element* element)
+void HTMLTreeBuilder::processFakeCharacters(const String& characters)
{
- if (!token.attributes())
+ AtomicHTMLToken fakeToken(characters);
+ processCharacter(fakeToken);
+}
+
+void HTMLTreeBuilder::processFakePEndTagIfPInScope()
+{
+ if (!m_tree.openElements()->inScope(pTag.localName()))
return;
+ AtomicHTMLToken endP(HTMLToken::EndTag, pTag.localName());
+ processEndTag(endP);
+}
- NamedNodeMap* attributes = element->attributes(false);
- for (unsigned i = 0; i < token.attributes()->length(); ++i) {
- Attribute* attribute = token.attributes()->attributeItem(i);
- if (!attributes->getAttributeItem(attribute->name()))
- element->setAttribute(attribute->name(), attribute->value());
+PassRefPtr<NamedNodeMap> HTMLTreeBuilder::attributesForIsindexInput(AtomicHTMLToken& token)
+{
+ RefPtr<NamedNodeMap> attributes = token.takeAtributes();
+ if (!attributes)
+ attributes = NamedNodeMap::create();
+ else {
+ attributes->removeAttribute(nameAttr);
+ attributes->removeAttribute(actionAttr);
+ attributes->removeAttribute(promptAttr);
}
+
+ RefPtr<Attribute> mappedAttribute = Attribute::createMapped(nameAttr, isindexTag.localName());
+ attributes->insertAttribute(mappedAttribute.release(), false);
+ return attributes.release();
}
-void HTMLTreeBuilder::insertHTMLStartTagInBody(AtomicHTMLToken& token)
+void HTMLTreeBuilder::processIsindexStartTagForInBody(AtomicHTMLToken& token)
{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ ASSERT(token.name() == isindexTag);
parseError(token);
- mergeAttributesFromTokenIntoElement(token, m_openElements.htmlElement());
+ if (m_tree.form())
+ return;
+ notImplemented(); // Acknowledge self-closing flag
+ processFakeStartTag(formTag);
+ Attribute* actionAttribute = token.getAttributeItem(actionAttr);
+ if (actionAttribute) {
+ ASSERT(m_tree.currentElement()->hasTagName(formTag));
+ m_tree.currentElement()->setAttribute(actionAttr, actionAttribute->value());
+ }
+ processFakeStartTag(hrTag);
+ processFakeStartTag(labelTag);
+ Attribute* promptAttribute = token.getAttributeItem(promptAttr);
+ if (promptAttribute)
+ processFakeCharacters(promptAttribute->value());
+ else
+ processFakeCharacters(searchableIndexIntroduction());
+ processFakeStartTag(inputTag, attributesForIsindexInput(token));
+ notImplemented(); // This second set of characters may be needed by non-english locales.
+ processFakeEndTag(labelTag);
+ processFakeStartTag(hrTag);
+ processFakeEndTag(formTag);
}
-void HTMLTreeBuilder::processFakePEndTagIfPInScope()
+namespace {
+
+bool isLi(const Element* element)
+{
+ return element->hasTagName(liTag);
+}
+
+bool isDdOrDt(const Element* element)
+{
+ return element->hasTagName(ddTag)
+ || element->hasTagName(dtTag);
+}
+
+}
+
+template <bool shouldClose(const Element*)>
+void HTMLTreeBuilder::processCloseWhenNestedTag(AtomicHTMLToken& token)
+{
+ m_framesetOk = false;
+ HTMLElementStack::ElementRecord* nodeRecord = m_tree.openElements()->topRecord();
+ while (1) {
+ Element* node = nodeRecord->element();
+ if (shouldClose(node)) {
+ processFakeEndTag(node->tagQName());
+ break;
+ }
+ if (isNotFormattingAndNotPhrasing(node) && !node->hasTagName(addressTag) && !node->hasTagName(divTag) && !node->hasTagName(pTag))
+ break;
+ nodeRecord = nodeRecord->next();
+ }
+ processFakePEndTagIfPInScope();
+ m_tree.insertHTMLElement(token);
+}
+
+namespace {
+
+typedef HashMap<AtomicString, QualifiedName> PrefixedNameToQualifiedNameMap;
+
+void mapLoweredLocalNameToName(PrefixedNameToQualifiedNameMap* map, QualifiedName** names, size_t length)
+{
+ for (size_t i = 0; i < length; ++i) {
+ const QualifiedName& name = *names[i];
+ const AtomicString& localName = name.localName();
+ AtomicString loweredLocalName = localName.lower();
+ if (loweredLocalName != localName)
+ map->add(loweredLocalName, name);
+ }
+}
+
+void addName(PrefixedNameToQualifiedNameMap* map, const QualifiedName& name)
+{
+ map->add(name.localName().lower(), name);
+}
+
+void adjustSVGTagNameCase(AtomicHTMLToken& token)
{
- if (!m_openElements.inScope(pTag.localName()))
+ static PrefixedNameToQualifiedNameMap* caseMap = 0;
+ if (!caseMap) {
+ caseMap = new PrefixedNameToQualifiedNameMap;
+ size_t length = 0;
+ QualifiedName** svgTags = SVGNames::getSVGTags(&length);
+ mapLoweredLocalNameToName(caseMap, svgTags, length);
+ }
+
+ const QualifiedName& casedName = caseMap->get(token.name());
+ if (casedName.localName().isNull())
return;
- AtomicHTMLToken endP(HTMLToken::EndTag, pTag.localName());
- processEndTag(endP);
+ token.setName(casedName.localName());
+}
+
+void adjustSVGAttributes(AtomicHTMLToken& token)
+{
+ static PrefixedNameToQualifiedNameMap* caseMap = 0;
+ if (!caseMap) {
+ caseMap = new PrefixedNameToQualifiedNameMap;
+ size_t length = 0;
+ QualifiedName** svgAttrs = SVGNames::getSVGAttrs(&length);
+ mapLoweredLocalNameToName(caseMap, svgAttrs, length);
+ }
+
+ NamedNodeMap* attributes = token.attributes();
+ if (!attributes)
+ return;
+
+ for (unsigned x = 0; x < attributes->length(); ++x) {
+ Attribute* attribute = attributes->attributeItem(x);
+ const QualifiedName& casedName = caseMap->get(attribute->localName());
+ if (!casedName.localName().isNull())
+ attribute->parserSetName(casedName);
+ }
+}
+
+void adjustMathMLAttributes(AtomicHTMLToken&)
+{
+ notImplemented();
+}
+
+void addNamesWithPrefix(PrefixedNameToQualifiedNameMap* map, const AtomicString& prefix, QualifiedName** names, size_t length)
+{
+ for (size_t i = 0; i < length; ++i) {
+ QualifiedName* name = names[i];
+ const AtomicString& localName = name->localName();
+ AtomicString prefixColonLocalName(prefix + ":" + localName);
+ QualifiedName nameWithPrefix(prefix, localName, name->namespaceURI());
+ map->add(prefixColonLocalName, nameWithPrefix);
+ }
+}
+
+void adjustForeignAttributes(AtomicHTMLToken& token)
+{
+ static PrefixedNameToQualifiedNameMap* map = 0;
+ if (!map) {
+ map = new PrefixedNameToQualifiedNameMap;
+ size_t length = 0;
+ QualifiedName** attrs = XLinkNames::getXLinkAttrs(&length);
+ addNamesWithPrefix(map, "xlink", attrs, length);
+
+ attrs = XMLNames::getXMLAttrs(&length);
+ addNamesWithPrefix(map, "xml", attrs, length);
+
+ map->add("xmlns", XMLNSNames::xmlnsAttr);
+ map->add("xmlns:xlink", QualifiedName("xmlns", "xlink", XMLNSNames::xmlnsNamespaceURI));
+ }
+
+ NamedNodeMap* attributes = token.attributes();
+ if (!attributes)
+ return;
+
+ for (unsigned x = 0; x < attributes->length(); ++x) {
+ Attribute* attribute = attributes->attributeItem(x);
+ const QualifiedName& name = map->get(attribute->localName());
+ if (!name.localName().isNull())
+ attribute->parserSetName(name);
+ }
+}
+
+}
+
+void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ if (token.name() == htmlTag) {
+ m_tree.insertHTMLHtmlStartTagInBody(token);
+ return;
+ }
+ if (token.name() == baseTag
+ || token.name() == "command"
+ || token.name() == linkTag
+ || token.name() == metaTag
+ || token.name() == noframesTag
+ || token.name() == scriptTag
+ || token.name() == styleTag
+ || token.name() == titleTag) {
+ bool didProcess = processStartTagForInHead(token);
+ ASSERT_UNUSED(didProcess, didProcess);
+ return;
+ }
+ if (token.name() == bodyTag) {
+ m_tree.insertHTMLBodyStartTagInBody(token);
+ return;
+ }
+ if (token.name() == framesetTag) {
+ parseError(token);
+ notImplemented(); // fragment case
+ if (!m_framesetOk)
+ return;
+ ExceptionCode ec = 0;
+ m_tree.openElements()->bodyElement()->remove(ec);
+ ASSERT(!ec);
+ m_tree.openElements()->popUntil(m_tree.openElements()->bodyElement());
+ m_tree.openElements()->popHTMLBodyElement();
+ ASSERT(m_tree.openElements()->top() == m_tree.openElements()->htmlElement());
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InFramesetMode);
+ return;
+ }
+ if (token.name() == addressTag
+ || token.name() == articleTag
+ || token.name() == asideTag
+ || token.name() == blockquoteTag
+ || token.name() == centerTag
+ || token.name() == "details"
+ || token.name() == dirTag
+ || token.name() == divTag
+ || token.name() == dlTag
+ || token.name() == fieldsetTag
+ || token.name() == "figure"
+ || token.name() == footerTag
+ || token.name() == headerTag
+ || token.name() == hgroupTag
+ || token.name() == menuTag
+ || token.name() == navTag
+ || token.name() == olTag
+ || token.name() == pTag
+ || token.name() == sectionTag
+ || token.name() == ulTag) {
+ processFakePEndTagIfPInScope();
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (isNumberedHeaderTag(token.name())) {
+ processFakePEndTagIfPInScope();
+ if (isNumberedHeaderTag(m_tree.currentElement()->localName())) {
+ parseError(token);
+ m_tree.openElements()->pop();
+ }
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (token.name() == preTag || token.name() == listingTag) {
+ processFakePEndTagIfPInScope();
+ m_tree.insertHTMLElement(token);
+ m_tokenizer->skipLeadingNewLineForListing();
+ m_framesetOk = false;
+ return;
+ }
+ if (token.name() == formTag) {
+ if (m_tree.form()) {
+ parseError(token);
+ return;
+ }
+ processFakePEndTagIfPInScope();
+ m_tree.insertHTMLElement(token);
+ m_tree.setForm(m_tree.currentElement());
+ return;
+ }
+ if (token.name() == liTag) {
+ processCloseWhenNestedTag<isLi>(token);
+ return;
+ }
+ if (token.name() == ddTag || token.name() == dtTag) {
+ processCloseWhenNestedTag<isDdOrDt>(token);
+ return;
+ }
+ if (token.name() == plaintextTag) {
+ processFakePEndTagIfPInScope();
+ m_tree.insertHTMLElement(token);
+ m_tokenizer->setState(HTMLTokenizer::PLAINTEXTState);
+ return;
+ }
+ if (token.name() == buttonTag) {
+ if (m_tree.openElements()->inScope(buttonTag)) {
+ parseError(token);
+ processFakeEndTag(buttonTag);
+ processStartTag(token); // FIXME: Could we just fall through here?
+ return;
+ }
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertHTMLElement(token);
+ m_framesetOk = false;
+ return;
+ }
+ if (token.name() == aTag) {
+ Element* activeATag = m_tree.activeFormattingElements()->closestElementInScopeWithName(aTag.localName());
+ if (activeATag) {
+ parseError(token);
+ processFakeEndTag(aTag);
+ m_tree.activeFormattingElements()->remove(activeATag);
+ if (m_tree.openElements()->contains(activeATag))
+ m_tree.openElements()->remove(activeATag);
+ }
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertFormattingElement(token);
+ return;
+ }
+ if (isNonAnchorNonNobrFormattingTag(token.name())) {
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertFormattingElement(token);
+ return;
+ }
+ if (token.name() == nobrTag) {
+ m_tree.reconstructTheActiveFormattingElements();
+ if (m_tree.openElements()->inScope(nobrTag)) {
+ parseError(token);
+ processFakeEndTag(nobrTag);
+ m_tree.reconstructTheActiveFormattingElements();
+ }
+ m_tree.insertFormattingElement(token);
+ return;
+ }
+ if (token.name() == appletTag
+ || token.name() == marqueeTag
+ || token.name() == objectTag) {
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertHTMLElement(token);
+ m_tree.activeFormattingElements()->appendMarker();
+ m_framesetOk = false;
+ return;
+ }
+ if (token.name() == tableTag) {
+ if (m_document->parseMode() != Document::Compat && m_tree.openElements()->inScope(pTag))
+ processFakeEndTag(pTag);
+ m_tree.insertHTMLElement(token);
+ m_framesetOk = false;
+ setInsertionMode(InTableMode);
+ return;
+ }
+ if (token.name() == imageTag) {
+ parseError(token);
+ // Apparently we're not supposed to ask.
+ token.setName(imgTag.localName());
+ // Note the fall through to the imgTag handling below!
+ }
+ if (token.name() == areaTag
+ || token.name() == basefontTag
+ || token.name() == "bgsound"
+ || token.name() == brTag
+ || token.name() == embedTag
+ || token.name() == imgTag
+ || token.name() == inputTag
+ || token.name() == keygenTag
+ || token.name() == wbrTag) {
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertSelfClosingHTMLElement(token);
+ m_framesetOk = false;
+ return;
+ }
+ if (token.name() == paramTag
+ || token.name() == sourceTag
+ || token.name() == "track") {
+ m_tree.insertSelfClosingHTMLElement(token);
+ return;
+ }
+ if (token.name() == hrTag) {
+ processFakePEndTagIfPInScope();
+ m_tree.insertSelfClosingHTMLElement(token);
+ m_framesetOk = false;
+ return;
+ }
+ if (token.name() == isindexTag) {
+ processIsindexStartTagForInBody(token);
+ return;
+ }
+ if (token.name() == textareaTag) {
+ m_tree.insertHTMLElement(token);
+ m_tokenizer->skipLeadingNewLineForListing();
+ m_tokenizer->setState(HTMLTokenizer::RCDATAState);
+ m_originalInsertionMode = m_insertionMode;
+ m_framesetOk = false;
+ setInsertionMode(TextMode);
+ return;
+ }
+ if (token.name() == xmpTag) {
+ processFakePEndTagIfPInScope();
+ m_tree.reconstructTheActiveFormattingElements();
+ m_framesetOk = false;
+ processGenericRawTextStartTag(token);
+ return;
+ }
+ if (token.name() == iframeTag) {
+ m_framesetOk = false;
+ processGenericRawTextStartTag(token);
+ return;
+ }
+ if (token.name() == noembedTag) {
+ processGenericRawTextStartTag(token);
+ return;
+ }
+ if (token.name() == noscriptTag && isScriptingFlagEnabled(m_document->frame())) {
+ processGenericRawTextStartTag(token);
+ return;
+ }
+ if (token.name() == selectTag) {
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertHTMLElement(token);
+ m_framesetOk = false;
+ if (m_insertionMode == InTableMode
+ || m_insertionMode == InCaptionMode
+ || m_insertionMode == InColumnGroupMode
+ || m_insertionMode == InTableBodyMode
+ || m_insertionMode == InRowMode
+ || m_insertionMode == InCellMode)
+ setInsertionMode(InSelectInTableMode);
+ else
+ setInsertionMode(InSelectMode);
+ return;
+ }
+ if (token.name() == optgroupTag || token.name() == optionTag) {
+ if (m_tree.openElements()->inScope(optionTag.localName())) {
+ AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
+ processEndTag(endOption);
+ }
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (token.name() == rpTag || token.name() == rtTag) {
+ if (m_tree.openElements()->inScope(rubyTag.localName())) {
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasTagName(rubyTag)) {
+ parseError(token);
+ m_tree.openElements()->popUntil(rubyTag.localName());
+ }
+ }
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (token.name() == MathMLNames::mathTag.localName()) {
+ m_tree.reconstructTheActiveFormattingElements();
+ adjustMathMLAttributes(token);
+ adjustForeignAttributes(token);
+ m_tree.insertForeignElement(token, MathMLNames::mathmlNamespaceURI);
+ if (m_insertionMode != InForeignContentMode) {
+ setSecondaryInsertionMode(m_insertionMode);
+ setInsertionMode(InForeignContentMode);
+ }
+ return;
+ }
+ if (token.name() == SVGNames::svgTag.localName()) {
+ m_tree.reconstructTheActiveFormattingElements();
+ adjustSVGAttributes(token);
+ adjustForeignAttributes(token);
+ m_tree.insertForeignElement(token, SVGNames::svgNamespaceURI);
+ if (m_insertionMode != InForeignContentMode) {
+ setSecondaryInsertionMode(m_insertionMode);
+ setInsertionMode(InForeignContentMode);
+ }
+ return;
+ }
+ if (isCaptionColOrColgroupTag(token.name())
+ || token.name() == frameTag
+ || token.name() == headTag
+ || isTableBodyContextTag(token.name())
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag) {
+ parseError(token);
+ return;
+ }
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertHTMLElement(token);
+}
+
+bool HTMLTreeBuilder::processColgroupEndTagForInColumnGroup()
+{
+ if (m_tree.currentElement() == m_tree.openElements()->htmlElement()) {
+ ASSERT(m_isParsingFragment);
+ // FIXME: parse error
+ return false;
+ }
+ m_tree.openElements()->pop();
+ setInsertionMode(InTableMode);
+ return true;
+}
+
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#close-the-cell
+void HTMLTreeBuilder::closeTheCell()
+{
+ ASSERT(insertionMode() == InCellMode);
+ if (m_tree.openElements()->inScope(tdTag)) {
+ ASSERT(!m_tree.openElements()->inScope(thTag));
+ processFakeEndTag(tdTag);
+ return;
+ }
+ ASSERT(m_tree.openElements()->inScope(thTag));
+ processFakeEndTag(thTag);
+ ASSERT(insertionMode() == InRowMode);
+}
+
+void HTMLTreeBuilder::processStartTagForInTable(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ if (token.name() == captionTag) {
+ m_tree.openElements()->popUntilTableScopeMarker();
+ m_tree.activeFormattingElements()->appendMarker();
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InCaptionMode);
+ return;
+ }
+ if (token.name() == colgroupTag) {
+ m_tree.openElements()->popUntilTableScopeMarker();
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InColumnGroupMode);
+ return;
+ }
+ if (token.name() == colTag) {
+ processFakeStartTag(colgroupTag);
+ ASSERT(InColumnGroupMode);
+ processStartTag(token);
+ return;
+ }
+ if (isTableBodyContextTag(token.name())) {
+ m_tree.openElements()->popUntilTableScopeMarker();
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InTableBodyMode);
+ return;
+ }
+ if (isTableCellContextTag(token.name())
+ || token.name() == trTag) {
+ processFakeStartTag(tbodyTag);
+ ASSERT(insertionMode() == InTableBodyMode);
+ processStartTag(token);
+ return;
+ }
+ if (token.name() == tableTag) {
+ parseError(token);
+ if (!processTableEndTagForInTable()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ processStartTag(token);
+ return;
+ }
+ if (token.name() == styleTag || token.name() == scriptTag) {
+ processStartTagForInHead(token);
+ return;
+ }
+ if (token.name() == inputTag) {
+ Attribute* typeAttribute = token.getAttributeItem(typeAttr);
+ if (!typeAttribute || equalIgnoringCase(typeAttribute->value(), "hidden")) {
+ parseError(token);
+ m_tree.insertSelfClosingHTMLElement(token);
+ return;
+ }
+ // Fall through to "anything else" case.
+ }
+ if (token.name() == formTag) {
+ parseError(token);
+ if (m_tree.form())
+ return;
+ m_tree.insertSelfClosingHTMLElement(token);
+ return;
+ }
+ parseError(token);
+ HTMLConstructionSite::RedirectToFosterParentGuard redirecter(m_tree, requiresRedirectToFosterParent(m_tree.currentElement()));
+ processStartTagForInBody(token);
+}
+
+namespace {
+
+bool shouldProcessUsingSecondaryInsertionMode(AtomicHTMLToken& token, Element* currentElement)
+{
+ ASSERT(token.type() == HTMLToken::StartTag);
+ if (currentElement->hasTagName(MathMLNames::miTag)
+ || currentElement->hasTagName(MathMLNames::moTag)
+ || currentElement->hasTagName(MathMLNames::mnTag)
+ || currentElement->hasTagName(MathMLNames::msTag)
+ || currentElement->hasTagName(MathMLNames::mtextTag)) {
+ return token.name() != MathMLNames::mglyphTag
+ && token.name() != MathMLNames::malignmarkTag;
+ }
+ if (currentElement->hasTagName(MathMLNames::annotation_xmlTag))
+ return token.name() == SVGNames::svgTag;
+ if (currentElement->hasTagName(SVGNames::foreignObjectTag)
+ || currentElement->hasTagName(SVGNames::descTag)
+ || currentElement->hasTagName(SVGNames::titleTag))
+ return true;
+ return currentElement->namespaceURI() == HTMLNames::xhtmlNamespaceURI;
+}
+
}
void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
{
+ ASSERT(token.type() == HTMLToken::StartTag);
switch (insertionMode()) {
case InitialMode:
ASSERT(insertionMode() == InitialMode);
@@ -460,7 +1183,7 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
case BeforeHTMLMode:
ASSERT(insertionMode() == BeforeHTMLMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagBeforeHTML(token);
+ m_tree.insertHTMLHtmlStartTagBeforeHTML(token);
setInsertionMode(BeforeHeadMode);
return;
}
@@ -469,11 +1192,11 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
case BeforeHeadMode:
ASSERT(insertionMode() == BeforeHeadMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
if (token.name() == headTag) {
- insertHTMLHeadElement(token);
+ m_tree.insertHTMLHeadElement(token);
setInsertionMode(InHeadMode);
return;
}
@@ -488,26 +1211,32 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
case AfterHeadMode:
ASSERT(insertionMode() == AfterHeadMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
if (token.name() == bodyTag) {
m_framesetOk = false;
- insertHTMLBodyElement(token);
- m_insertionMode = InBodyMode;
+ m_tree.insertHTMLBodyElement(token);
+ setInsertionMode(InBodyMode);
return;
}
if (token.name() == framesetTag) {
- insertElement(token);
+ m_tree.insertHTMLElement(token);
setInsertionMode(InFramesetMode);
return;
}
- if (token.name() == baseTag || token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == scriptTag || token.name() == styleTag || token.name() == titleTag) {
+ if (token.name() == baseTag
+ || token.name() == linkTag
+ || token.name() == metaTag
+ || token.name() == noframesTag
+ || token.name() == scriptTag
+ || token.name() == styleTag
+ || token.name() == titleTag) {
parseError(token);
- ASSERT(m_headElement);
- m_openElements.pushHTMLHeadElement(m_headElement);
+ ASSERT(m_tree.head());
+ m_tree.openElements()->pushHTMLHeadElement(m_tree.head());
processStartTagForInHead(token);
- m_openElements.removeHTMLHeadElement(m_headElement.get());
+ m_tree.openElements()->removeHTMLHeadElement(m_tree.head());
return;
}
if (token.name() == headTag) {
@@ -518,309 +1247,134 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
// Fall through
case InBodyMode:
ASSERT(insertionMode() == InBodyMode);
- if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
- return;
- }
- if (token.name() == baseTag || token.name() == "command" || token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == scriptTag || token.name() == styleTag || token.name() == titleTag) {
- bool didProcess = processStartTagForInHead(token);
- ASSERT_UNUSED(didProcess, didProcess);
- return;
- }
- if (token.name() == bodyTag) {
- parseError(token);
- notImplemented(); // fragment case
- mergeAttributesFromTokenIntoElement(token, m_openElements.bodyElement());
- return;
- }
- if (token.name() == framesetTag) {
+ processStartTagForInBody(token);
+ break;
+ case InTableMode:
+ ASSERT(insertionMode() == InTableMode);
+ processStartTagForInTable(token);
+ break;
+ case InCaptionMode:
+ ASSERT(insertionMode() == InCaptionMode);
+ if (isCaptionColOrColgroupTag(token.name())
+ || isTableBodyContextTag(token.name())
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag) {
parseError(token);
- notImplemented(); // fragment case
- if (!m_framesetOk)
+ if (!processCaptionEndTagForInCaption()) {
+ ASSERT(m_isParsingFragment);
return;
- ExceptionCode ec = 0;
- m_openElements.bodyElement()->remove(ec);
- ASSERT(!ec);
- m_openElements.popUntil(m_openElements.bodyElement());
- m_openElements.popHTMLBodyElement();
- ASSERT(m_openElements.top() == m_openElements.htmlElement());
- insertElement(token);
- m_insertionMode = InFramesetMode;
- return;
- }
- if (token.name() == addressTag || token.name() == articleTag || token.name() == asideTag || token.name() == blockquoteTag || token.name() == centerTag || token.name() == "details" || token.name() == dirTag || token.name() == divTag || token.name() == dlTag || token.name() == fieldsetTag || token.name() == "figure" || token.name() == footerTag || token.name() == headerTag || token.name() == hgroupTag || token.name() == menuTag || token.name() == navTag || token.name() == olTag || token.name() == pTag || token.name() == sectionTag || token.name() == ulTag) {
- processFakePEndTagIfPInScope();
- insertElement(token);
- return;
- }
- if (isNumberedHeaderTag(token.name())) {
- processFakePEndTagIfPInScope();
- notImplemented();
- insertElement(token);
- return;
- }
- if (token.name() == preTag || token.name() == listingTag) {
- processFakePEndTagIfPInScope();
- insertElement(token);
- m_tokenizer->skipLeadingNewLineForListing();
- m_framesetOk = false;
- return;
- }
- if (token.name() == formTag) {
- notImplemented();
- processFakePEndTagIfPInScope();
- insertElement(token);
- m_formElement = currentElement();
- return;
- }
- if (token.name() == liTag) {
- notImplemented();
- processFakePEndTagIfPInScope();
- insertElement(token);
- return;
- }
- if (token.name() == ddTag || token.name() == dtTag) {
- notImplemented();
- processFakePEndTagIfPInScope();
- insertElement(token);
- return;
- }
- if (token.name() == plaintextTag) {
- processFakePEndTagIfPInScope();
- insertElement(token);
- m_tokenizer->setState(HTMLTokenizer::PLAINTEXTState);
- return;
- }
- if (token.name() == buttonTag) {
- notImplemented();
- reconstructTheActiveFormattingElements();
- insertElement(token);
- m_framesetOk = false;
- return;
- }
- if (token.name() == aTag) {
- notImplemented();
- reconstructTheActiveFormattingElements();
- insertFormattingElement(token);
- return;
- }
- if (isNonAnchorFormattingTag(token.name())) {
- reconstructTheActiveFormattingElements();
- insertFormattingElement(token);
- return;
- }
- if (token.name() == nobrTag) {
- reconstructTheActiveFormattingElements();
- notImplemented();
- insertFormattingElement(token);
- return;
- }
- if (token.name() == appletTag || token.name() == marqueeTag || token.name() == objectTag) {
- reconstructTheActiveFormattingElements();
- insertElement(token);
- notImplemented();
- m_framesetOk = false;
- return;
- }
- if (token.name() == tableTag) {
- notImplemented();
- insertElement(token);
- m_framesetOk = false;
- m_insertionMode = InTableMode;
- return;
- }
- if (token.name() == imageTag) {
- parseError(token);
- // Apparently we're not supposed to ask.
- token.setName(imgTag.localName());
- // Note the fall through to the imgTag handling below!
- }
- if (token.name() == areaTag || token.name() == basefontTag || token.name() == "bgsound" || token.name() == brTag || token.name() == embedTag || token.name() == imgTag || token.name() == inputTag || token.name() == keygenTag || token.name() == wbrTag) {
- reconstructTheActiveFormattingElements();
- insertSelfClosingElement(token);
- m_framesetOk = false;
- return;
- }
- if (token.name() == paramTag || token.name() == sourceTag || token.name() == "track") {
- insertSelfClosingElement(token);
- return;
- }
- if (token.name() == hrTag) {
- processFakePEndTagIfPInScope();
- insertSelfClosingElement(token);
- m_framesetOk = false;
- return;
- }
- if (token.name() == isindexTag) {
- parseError(token);
- notImplemented();
- return;
- }
- if (token.name() == textareaTag) {
- insertElement(token);
- m_tokenizer->skipLeadingNewLineForListing();
- m_tokenizer->setState(HTMLTokenizer::RCDATAState);
- m_originalInsertionMode = m_insertionMode;
- m_framesetOk = false;
- m_insertionMode = TextMode;
- return;
- }
- if (token.name() == xmpTag) {
- processFakePEndTagIfPInScope();
- reconstructTheActiveFormattingElements();
- m_framesetOk = false;
- insertGenericRawTextElement(token);
- return;
- }
- if (token.name() == iframeTag) {
- m_framesetOk = false;
- insertGenericRawTextElement(token);
- return;
- }
- if (token.name() == noembedTag) {
- insertGenericRawTextElement(token);
- return;
- }
- if (token.name() == noscriptTag && isScriptingFlagEnabled(m_document->frame())) {
- insertGenericRawTextElement(token);
- return;
- }
- if (token.name() == selectTag) {
- reconstructTheActiveFormattingElements();
- insertElement(token);
- m_framesetOk = false;
- if (m_insertionMode == InTableMode || m_insertionMode == InCaptionMode || m_insertionMode == InColumnGroupMode || m_insertionMode == InTableBodyMode || m_insertionMode == InRowMode || m_insertionMode == InCellMode)
- m_insertionMode = InSelectInTableMode;
- else
- m_insertionMode = InSelectMode;
- return;
- }
- if (token.name() == optgroupTag || token.name() == optionTag) {
- if (m_openElements.inScope(optionTag.localName())) {
- AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
- processEndTag(endOption);
}
- reconstructTheActiveFormattingElements();
- insertElement(token);
- return;
- }
- if (token.name() == rpTag || token.name() == rtTag) {
- if (m_openElements.inScope(rubyTag.localName())) {
- generateImpliedEndTags();
- if (!currentElement()->hasTagName(rubyTag)) {
- parseError(token);
- m_openElements.popUntil(rubyTag.localName());
- }
- }
- insertElement(token);
- return;
- }
- if (token.name() == "math") {
- // This is the MathML foreign content branch point.
- notImplemented();
- }
- if (token.name() == "svg") {
- // This is the SVG foreign content branch point.
- notImplemented();
- }
- if (token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || token.name() == frameTag || token.name() == headTag || token.name() == tbodyTag || token.name() == tdTag || token.name() == tfootTag || token.name() == thTag || token.name() == theadTag || token.name() == trTag) {
- parseError(token);
+ processStartTag(token);
return;
}
- reconstructTheActiveFormattingElements();
- insertElement(token);
+ processStartTagForInBody(token);
break;
- case InTableMode:
- ASSERT(insertionMode() == InTableMode);
- if (token.name() == captionTag) {
- m_openElements.popUntilTableScopeMarker();
- m_activeFormattingElements.appendMarker();
- insertElement(token);
- m_insertionMode = InCaptionMode;
- return;
- }
- if (token.name() == colgroupTag) {
- m_openElements.popUntilTableScopeMarker();
- insertElement(token);
- m_insertionMode = InColumnGroupMode;
+ case InColumnGroupMode:
+ ASSERT(insertionMode() == InColumnGroupMode);
+ if (token.name() == htmlTag) {
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
if (token.name() == colTag) {
- notImplemented();
+ m_tree.insertSelfClosingHTMLElement(token);
return;
}
- if (isTableBodyContextTag(token.name())) {
- m_openElements.popUntilTableScopeMarker();
- insertElement(token);
- m_insertionMode = InTableBodyMode;
+ if (!processColgroupEndTagForInColumnGroup()) {
+ ASSERT(m_isParsingFragment);
return;
}
- if (token.name() == tdTag || token.name() == thTag || token.name() == trTag) {
- notImplemented();
- return;
- }
- if (token.name() == tableTag) {
- notImplemented();
- return;
- }
- if (token.name() == styleTag || token.name() == scriptTag) {
- processStartTagForInHead(token);
- return;
- }
- if (token.name() == inputTag) {
- notImplemented();
- return;
- }
- if (token.name() == formTag) {
- parseError(token);
- if (m_formElement)
- return;
- insertSelfClosingElement(token);
- return;
- }
- parseError(token);
- notImplemented();
+ processStartTag(token);
break;
case InTableBodyMode:
ASSERT(insertionMode() == InTableBodyMode);
if (token.name() == trTag) {
- m_openElements.popUntilTableBodyScopeMarker(); // How is there ever anything to pop?
- insertElement(token);
- m_insertionMode = InRowMode;
+ m_tree.openElements()->popUntilTableBodyScopeMarker(); // How is there ever anything to pop?
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InRowMode);
return;
}
- if (token.name() == thTag || token.name() == tdTag) {
+ if (isTableCellContextTag(token.name())) {
parseError(token);
- AtomicHTMLToken fakeToken(HTMLToken::StartTag, trTag.localName());
- processStartTag(fakeToken);
+ processFakeStartTag(trTag);
ASSERT(insertionMode() == InRowMode);
processStartTag(token);
return;
}
- if (token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || isTableBodyContextTag(token.name())) {
- // FIXME: The spec is unclear as to what is supposed to happen here.
- notImplemented();
+ if (isCaptionColOrColgroupTag(token.name()) || isTableBodyContextTag(token.name())) {
+ // FIXME: This is slow.
+ if (!m_tree.openElements()->inTableScope(tbodyTag.localName()) && !m_tree.openElements()->inTableScope(theadTag.localName()) && !m_tree.openElements()->inTableScope(tfootTag.localName())) {
+ ASSERT(m_isParsingFragment);
+ parseError(token);
+ return;
+ }
+ m_tree.openElements()->popUntilTableBodyScopeMarker();
+ ASSERT(isTableBodyContextTag(m_tree.currentElement()->localName()));
+ processFakeEndTag(m_tree.currentElement()->tagQName());
+ processStartTag(token);
return;
}
- notImplemented(); // process using "in table" rules
+ processStartTagForInTable(token);
+ break;
+ case InRowMode:
+ ASSERT(insertionMode() == InRowMode);
+ if (isTableCellContextTag(token.name())) {
+ m_tree.openElements()->popUntilTableRowScopeMarker();
+ m_tree.insertHTMLElement(token);
+ setInsertionMode(InCellMode);
+ m_tree.activeFormattingElements()->appendMarker();
+ return;
+ }
+ if (token.name() == trTag
+ || isCaptionColOrColgroupTag(token.name())
+ || isTableBodyContextTag(token.name())) {
+ if (!processTrEndTagForInRow()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ ASSERT(insertionMode() == InTableBodyMode);
+ processStartTag(token);
+ return;
+ }
+ processStartTagForInTable(token);
+ break;
+ case InCellMode:
+ ASSERT(insertionMode() == InCellMode);
+ if (isCaptionColOrColgroupTag(token.name())
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag
+ || isTableBodyContextTag(token.name())) {
+ // FIXME: This could be more efficient.
+ if (!m_tree.openElements()->inTableScope(tdTag) && !m_tree.openElements()->inTableScope(thTag)) {
+ ASSERT(m_isParsingFragment);
+ parseError(token);
+ return;
+ }
+ closeTheCell();
+ processStartTag(token);
+ return;
+ }
+ processStartTagForInBody(token);
break;
case AfterBodyMode:
case AfterAfterBodyMode:
ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
- m_insertionMode = InBodyMode;
+ setInsertionMode(InBodyMode);
processStartTag(token);
break;
case InHeadNoscriptMode:
ASSERT(insertionMode() == InHeadNoscriptMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
- if (token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == styleTag) {
+ if (token.name() == linkTag
+ || token.name() == metaTag
+ || token.name() == noframesTag
+ || token.name() == styleTag) {
bool didProcess = processStartTagForInHead(token);
ASSERT_UNUSED(didProcess, didProcess);
return;
@@ -835,15 +1389,15 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
case InFramesetMode:
ASSERT(insertionMode() == InFramesetMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
if (token.name() == framesetTag) {
- insertElement(token);
+ m_tree.insertHTMLElement(token);
return;
}
if (token.name() == frameTag) {
- insertSelfClosingElement(token);
+ m_tree.insertSelfClosingHTMLElement(token);
return;
}
if (token.name() == noframesTag) {
@@ -856,7 +1410,7 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
case AfterAfterFramesetMode:
ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return;
}
if (token.name() == noframesTag) {
@@ -865,61 +1419,197 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
}
parseError(token);
break;
- default:
+ case InSelectInTableMode:
+ ASSERT(insertionMode() == InSelectInTableMode);
+ if (token.name() == captionTag
+ || token.name() == tableTag
+ || isTableBodyContextTag(token.name())
+ || token.name() == trTag
+ || isTableCellContextTag(token.name())) {
+ parseError(token);
+ AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
+ processEndTag(endSelect);
+ processStartTag(token);
+ return;
+ }
+ // Fall through
+ case InSelectMode:
+ ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode);
+ if (token.name() == htmlTag) {
+ m_tree.insertHTMLHtmlStartTagInBody(token);
+ return;
+ }
+ if (token.name() == optionTag) {
+ if (m_tree.currentElement()->hasTagName(optionTag)) {
+ AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
+ processEndTag(endOption);
+ }
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (token.name() == optgroupTag) {
+ if (m_tree.currentElement()->hasTagName(optionTag)) {
+ AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
+ processEndTag(endOption);
+ }
+ if (m_tree.currentElement()->hasTagName(optgroupTag)) {
+ AtomicHTMLToken endOptgroup(HTMLToken::EndTag, optgroupTag.localName());
+ processEndTag(endOptgroup);
+ }
+ m_tree.insertHTMLElement(token);
+ return;
+ }
+ if (token.name() == selectTag) {
+ parseError(token);
+ AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
+ processEndTag(endSelect);
+ return;
+ }
+ if (token.name() == inputTag
+ || token.name() == keygenTag
+ || token.name() == textareaTag) {
+ parseError(token);
+ notImplemented(); // fragment case
+ AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
+ processEndTag(endSelect);
+ processStartTag(token);
+ return;
+ }
+ if (token.name() == scriptTag) {
+ bool didProcess = processStartTagForInHead(token);
+ ASSERT_UNUSED(didProcess, didProcess);
+ return;
+ }
+ break;
+ case InTableTextMode:
+ processDefaultForInTableTextMode(token);
+ processStartTag(token);
+ break;
+ case InForeignContentMode: {
+ // FIXME: We're missing a bunch of if branches here.
+ if (shouldProcessUsingSecondaryInsertionMode(token, m_tree.currentElement())) {
+ processUsingSecondaryInsertionModeAndAdjustInsertionMode(token);
+ return;
+ }
+ if (token.name() == bTag
+ || token.name() == bigTag
+ || token.name() == blockquoteTag
+ || token.name() == bodyTag
+ || token.name() == brTag
+ || token.name() == centerTag
+ || token.name() == codeTag
+ || token.name() == ddTag
+ || token.name() == divTag
+ || token.name() == dlTag
+ || token.name() == dtTag
+ || token.name() == emTag
+ || token.name() == embedTag
+ || isNumberedHeaderTag(token.name())
+ || token.name() == headTag
+ || token.name() == hrTag
+ || token.name() == iTag
+ || token.name() == imgTag
+ || token.name() == liTag
+ || token.name() == listingTag
+ || token.name() == menuTag
+ || token.name() == metaTag
+ || token.name() == nobrTag
+ || token.name() == olTag
+ || token.name() == pTag
+ || token.name() == preTag
+ || token.name() == rubyTag
+ || token.name() == sTag
+ || token.name() == smallTag
+ || token.name() == spanTag
+ || token.name() == strongTag
+ || token.name() == strikeTag
+ || token.name() == subTag
+ || token.name() == supTag
+ || token.name() == tableTag
+ || token.name() == ttTag
+ || token.name() == uTag
+ || token.name() == ulTag
+ || token.name() == varTag
+ || (token.name() == fontTag && (token.getAttributeItem(colorAttr) || token.getAttributeItem(faceAttr) || token.getAttributeItem(sizeAttr)))) {
+ m_tree.openElements()->popUntilElementWithNamespace(xhtmlNamespaceURI);
+ setInsertionMode(m_secondaryInsertionMode);
+ processStartTag(token);
+ return;
+ }
+ const AtomicString& currentNamespace = m_tree.currentElement()->namespaceURI();
+ if (currentNamespace == MathMLNames::mathmlNamespaceURI)
+ adjustMathMLAttributes(token);
+ if (currentNamespace == SVGNames::svgNamespaceURI) {
+ adjustSVGTagNameCase(token);
+ adjustSVGAttributes(token);
+ }
+ adjustForeignAttributes(token);
+ m_tree.insertForeignElement(token, currentNamespace);
+ break;
+ }
+ case TextMode:
notImplemented();
+ break;
}
}
bool HTMLTreeBuilder::processBodyEndTagForInBody(AtomicHTMLToken& token)
{
- if (!m_openElements.inScope(bodyTag.localName())) {
+ ASSERT(token.type() == HTMLToken::EndTag);
+ ASSERT(token.name() == bodyTag);
+ if (!m_tree.openElements()->inScope(bodyTag.localName())) {
parseError(token);
return false;
}
notImplemented();
- m_insertionMode = AfterBodyMode;
+ setInsertionMode(AfterBodyMode);
return true;
}
+void HTMLTreeBuilder::processAnyOtherEndTagForInBody(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ HTMLElementStack::ElementRecord* record = m_tree.openElements()->topRecord();
+ while (1) {
+ Element* node = record->element();
+ if (node->hasLocalName(token.name())) {
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasLocalName(token.name())) {
+ parseError(token);
+ // FIXME: This is either a bug in the spec, or a bug in our
+ // implementation. Filed a bug with HTML5:
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10080
+ // We might have already popped the node for the token in
+ // generateImpliedEndTags, just abort.
+ if (!m_tree.openElements()->contains(node))
+ return;
+ }
+ m_tree.openElements()->popUntilPopped(node);
+ return;
+ }
+ if (isNotFormattingAndNotPhrasing(node)) {
+ parseError(token);
+ return;
+ }
+ record = record->next();
+ }
+}
+
// FIXME: This probably belongs on HTMLElementStack.
HTMLElementStack::ElementRecord* HTMLTreeBuilder::furthestBlockForFormattingElement(Element* formattingElement)
{
HTMLElementStack::ElementRecord* furthestBlock = 0;
- HTMLElementStack::ElementRecord* record = m_openElements.topRecord();
+ HTMLElementStack::ElementRecord* record = m_tree.openElements()->topRecord();
for (; record; record = record->next()) {
if (record->element() == formattingElement)
return furthestBlock;
- const AtomicString& tagName = record->element()->localName();
- // !phrasing && !formatting == scoping || special
- if (isScopingTag(tagName) || isSpecialTag(tagName))
+ if (isNotFormattingAndNotPhrasing(record->element()))
furthestBlock = record;
}
ASSERT_NOT_REACHED();
return 0;
}
-void HTMLTreeBuilder::findFosterParentFor(Element* element)
-{
- Element* fosterParentElement = 0;
- HTMLElementStack::ElementRecord* lastTableElementRecord = m_openElements.topmost(tableTag.localName());
- if (lastTableElementRecord) {
- Element* lastTableElement = lastTableElementRecord->element();
- if (lastTableElement->parent()) {
- // FIXME: We need an insertElement which does not send mutation events.
- ExceptionCode ec = 0;
- lastTableElement->parent()->insertBefore(element, lastTableElement, ec);
- ASSERT(!ec);
- return;
- }
- fosterParentElement = lastTableElementRecord->next()->element();
- } else {
- ASSERT(m_isParsingFragment);
- fosterParentElement = m_openElements.bottom(); // <html> element
- }
-
- fosterParentElement->parserAddChild(element);
-}
-
// FIXME: This should have a whitty name.
// FIXME: This must be implemented in many other places in WebCore.
void HTMLTreeBuilder::reparentChildren(Element* oldParent, Element* newParent)
@@ -939,34 +1629,33 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token)
{
while (1) {
// 1.
- Element* formattingElement = m_activeFormattingElements.closestElementInScopeWithName(token.name());
- if (!formattingElement || !m_openElements.inScope(formattingElement)) {
+ Element* formattingElement = m_tree.activeFormattingElements()->closestElementInScopeWithName(token.name());
+ if (!formattingElement || (m_tree.openElements()->contains(formattingElement)) && !m_tree.openElements()->inScope(formattingElement)) {
parseError(token);
notImplemented(); // Check the stack of open elements for a more specific parse error.
return;
}
- HTMLElementStack::ElementRecord* formattingElementRecord = m_openElements.find(formattingElement);
+ HTMLElementStack::ElementRecord* formattingElementRecord = m_tree.openElements()->find(formattingElement);
if (!formattingElementRecord) {
parseError(token);
- m_activeFormattingElements.remove(formattingElement);
+ m_tree.activeFormattingElements()->remove(formattingElement);
return;
}
- if (formattingElement != currentElement())
+ if (formattingElement != m_tree.currentElement())
parseError(token);
// 2.
HTMLElementStack::ElementRecord* furthestBlock = furthestBlockForFormattingElement(formattingElement);
// 3.
if (!furthestBlock) {
- m_openElements.popUntil(formattingElement);
- m_openElements.pop();
- m_activeFormattingElements.remove(formattingElement);
+ m_tree.openElements()->popUntilPopped(formattingElement);
+ m_tree.activeFormattingElements()->remove(formattingElement);
return;
}
// 4.
ASSERT(furthestBlock->isAbove(formattingElementRecord));
Element* commonAncestor = formattingElementRecord->next()->element();
// 5.
- notImplemented(); // bookmark?
+ HTMLFormattingElementList::Bookmark bookmark = m_tree.activeFormattingElements()->bookmarkFor(formattingElement);
// 6.
HTMLElementStack::ElementRecord* node = furthestBlock;
HTMLElementStack::ElementRecord* nextNode = node->next();
@@ -977,26 +1666,28 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token)
ASSERT(node);
nextNode = node->next(); // Save node->next() for the next iteration in case node is deleted in 6.2.
// 6.2
- if (!m_activeFormattingElements.contains(node->element())) {
- m_openElements.remove(node->element());
+ if (!m_tree.activeFormattingElements()->contains(node->element())) {
+ m_tree.openElements()->remove(node->element());
node = 0;
continue;
}
// 6.3
if (node == formattingElementRecord)
break;
- // 6.4
- if (lastNode == furthestBlock)
- notImplemented(); // move bookmark.
// 6.5
// FIXME: We're supposed to save the original token in the entry.
AtomicHTMLToken fakeToken(HTMLToken::StartTag, node->element()->localName());
- // Is createElement correct? (instead of insertElement)
+ // Is createHTMLElement correct? (instead of insertHTMLElement)
// Does this code ever leave newElement unattached?
- RefPtr<Element> newElement = createElement(fakeToken);
- HTMLFormattingElementList::Entry* nodeEntry = m_activeFormattingElements.find(node->element());
+ RefPtr<Element> newElement = m_tree.createHTMLElement(fakeToken);
+ HTMLFormattingElementList::Entry* nodeEntry = m_tree.activeFormattingElements()->find(node->element());
nodeEntry->replaceElement(newElement.get());
node->replaceElement(newElement.release());
+ // 6.4 -- Intentionally out of order to handle the case where node
+ // was replaced in 6.5.
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10096
+ if (lastNode == furthestBlock)
+ bookmark.moveToAfter(node->element());
// 6.6
// Use appendChild instead of parserAddChild to handle possible reparenting.
ExceptionCode ec;
@@ -1010,7 +1701,7 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token)
if (commonAncestorTag == tableTag
|| commonAncestorTag == trTag
|| isTableBodyContextTag(commonAncestorTag))
- findFosterParentFor(lastNode->element());
+ m_tree.fosterParent(lastNode->element());
else {
ExceptionCode ec;
commonAncestor->appendChild(lastNode->element(), ec);
@@ -1019,22 +1710,403 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token)
// 8
// FIXME: We're supposed to save the original token in the entry.
AtomicHTMLToken fakeToken(HTMLToken::StartTag, formattingElement->localName());
- RefPtr<Element> newElement = createElement(fakeToken);
+ RefPtr<Element> newElement = m_tree.createHTMLElement(fakeToken);
// 9
reparentChildren(furthestBlock->element(), newElement.get());
// 10
furthestBlock->element()->parserAddChild(newElement);
// 11
- m_activeFormattingElements.remove(formattingElement);
- notImplemented(); // insert new element at bookmark
+ m_tree.activeFormattingElements()->remove(formattingElement);
+ m_tree.activeFormattingElements()->insertAt(newElement.get(), bookmark);
// 12
- m_openElements.remove(formattingElement);
- m_openElements.insertAbove(newElement, furthestBlock);
+ m_tree.openElements()->remove(formattingElement);
+ m_tree.openElements()->insertAbove(newElement, furthestBlock);
+ }
+}
+
+void HTMLTreeBuilder::setSecondaryInsertionMode(InsertionMode mode)
+{
+ ASSERT(mode != InForeignContentMode);
+ m_secondaryInsertionMode = mode;
+}
+
+void HTMLTreeBuilder::setInsertionModeAndEnd(InsertionMode newInsertionMode, bool foreign)
+{
+ setInsertionMode(newInsertionMode);
+ if (foreign) {
+ setSecondaryInsertionMode(m_insertionMode);
+ setInsertionMode(InForeignContentMode);
+ }
+}
+
+void HTMLTreeBuilder::resetInsertionModeAppropriately()
+{
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-appropriately
+ bool last = false;
+ bool foreign = false;
+ HTMLElementStack::ElementRecord* nodeRecord = m_tree.openElements()->topRecord();
+ while (1) {
+ Element* node = nodeRecord->element();
+ if (node == m_tree.openElements()->bottom()) {
+ ASSERT(m_isParsingFragment);
+ last = true;
+ notImplemented(); // node = m_contextElement;
+ }
+ if (node->hasTagName(selectTag)) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(InSelectMode, foreign);
+ }
+ if (node->hasTagName(tdTag) || node->hasTagName(thTag))
+ return setInsertionModeAndEnd(InCellMode, foreign);
+ if (node->hasTagName(trTag))
+ return setInsertionModeAndEnd(InRowMode, foreign);
+ if (isTableBodyContextTag(node->localName()))
+ return setInsertionModeAndEnd(InTableBodyMode, foreign);
+ if (node->hasTagName(captionTag))
+ return setInsertionModeAndEnd(InCaptionMode, foreign);
+ if (node->hasTagName(colgroupTag)) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(InColumnGroupMode, foreign);
+ }
+ if (node->hasTagName(tableTag))
+ return setInsertionModeAndEnd(InTableMode, foreign);
+ if (node->hasTagName(headTag)) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(InBodyMode, foreign);
+ }
+ if (node->hasTagName(bodyTag))
+ return setInsertionModeAndEnd(InBodyMode, foreign);
+ if (node->hasTagName(framesetTag)) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(InFramesetMode, foreign);
+ }
+ if (node->hasTagName(htmlTag)) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(BeforeHeadMode, foreign);
+ }
+ if (node->namespaceURI() == SVGNames::svgNamespaceURI
+ || node->namespaceURI() == MathMLNames::mathmlNamespaceURI)
+ foreign = true;
+ if (last) {
+ ASSERT(m_isParsingFragment);
+ return setInsertionModeAndEnd(InBodyMode, foreign);
+ }
+ nodeRecord = nodeRecord->next();
+ }
+}
+
+void HTMLTreeBuilder::processEndTagForInTableBody(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ if (isTableBodyContextTag(token.name())) {
+ if (!m_tree.openElements()->inTableScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.openElements()->popUntilTableBodyScopeMarker();
+ m_tree.openElements()->pop();
+ setInsertionMode(InTableMode);
+ return;
+ }
+ if (token.name() == tableTag) {
+ // FIXME: This is slow.
+ if (!m_tree.openElements()->inTableScope(tbodyTag.localName()) && !m_tree.openElements()->inTableScope(theadTag.localName()) && !m_tree.openElements()->inTableScope(tfootTag.localName())) {
+ ASSERT(m_isParsingFragment);
+ parseError(token);
+ return;
+ }
+ m_tree.openElements()->popUntilTableBodyScopeMarker();
+ ASSERT(isTableBodyContextTag(m_tree.currentElement()->localName()));
+ processFakeEndTag(m_tree.currentElement()->tagQName());
+ processEndTag(token);
+ return;
+ }
+ if (token.name() == bodyTag
+ || isCaptionColOrColgroupTag(token.name())
+ || token.name() == htmlTag
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag) {
+ parseError(token);
+ return;
+ }
+ processEndTagForInTable(token);
+}
+
+void HTMLTreeBuilder::processEndTagForInRow(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ if (token.name() == trTag) {
+ processTrEndTagForInRow();
+ return;
+ }
+ if (token.name() == tableTag) {
+ if (!processTrEndTagForInRow()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ ASSERT(insertionMode() == InTableBodyMode);
+ processEndTag(token);
+ return;
+ }
+ if (isTableBodyContextTag(token.name())) {
+ if (!m_tree.openElements()->inTableScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ processFakeEndTag(trTag);
+ ASSERT(insertionMode() == InTableBodyMode);
+ processEndTag(token);
+ return;
+ }
+ if (token.name() == bodyTag
+ || isCaptionColOrColgroupTag(token.name())
+ || token.name() == htmlTag
+ || isTableCellContextTag(token.name())) {
+ parseError(token);
+ return;
+ }
+ processEndTagForInTable(token);
+}
+
+void HTMLTreeBuilder::processEndTagForInCell(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ if (isTableCellContextTag(token.name())) {
+ if (!m_tree.openElements()->inTableScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ m_tree.activeFormattingElements()->clearToLastMarker();
+ setInsertionMode(InRowMode);
+ ASSERT(m_tree.currentElement()->hasTagName(trTag));
+ return;
+ }
+ if (token.name() == bodyTag
+ || isCaptionColOrColgroupTag(token.name())
+ || token.name() == htmlTag) {
+ parseError(token);
+ return;
}
+ if (token.name() == tableTag
+ || token.name() == trTag
+ || isTableBodyContextTag(token.name())) {
+ if (!m_tree.openElements()->inTableScope(token.name())) {
+ ASSERT(m_isParsingFragment);
+ // FIXME: It is unclear what the exact ASSERT should be.
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10098
+ parseError(token);
+ return;
+ }
+ closeTheCell();
+ processEndTag(token);
+ return;
+ }
+ processEndTagForInBody(token);
+}
+
+void HTMLTreeBuilder::processEndTagForInBody(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ if (token.name() == bodyTag) {
+ processBodyEndTagForInBody(token);
+ return;
+ }
+ if (token.name() == htmlTag) {
+ AtomicHTMLToken endBody(HTMLToken::EndTag, bodyTag.localName());
+ if (processBodyEndTagForInBody(endBody))
+ processEndTag(token);
+ return;
+ }
+ if (token.name() == addressTag
+ || token.name() == articleTag
+ || token.name() == asideTag
+ || token.name() == blockquoteTag
+ || token.name() == buttonTag
+ || token.name() == centerTag
+ || token.name() == "details"
+ || token.name() == dirTag
+ || token.name() == divTag
+ || token.name() == dlTag
+ || token.name() == fieldsetTag
+ || token.name() == "figure"
+ || token.name() == footerTag
+ || token.name() == headerTag
+ || token.name() == hgroupTag
+ || token.name() == listingTag
+ || token.name() == menuTag
+ || token.name() == navTag
+ || token.name() == olTag
+ || token.name() == preTag
+ || token.name() == sectionTag
+ || token.name() == ulTag) {
+ if (!m_tree.openElements()->inScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ return;
+ }
+ if (token.name() == formTag) {
+ RefPtr<Element> node = m_tree.takeForm();
+ if (!node || !m_tree.openElements()->inScope(node.get())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTags();
+ if (m_tree.currentElement() != node.get())
+ parseError(token);
+ m_tree.openElements()->remove(node.get());
+ }
+ if (token.name() == pTag) {
+ if (!m_tree.openElements()->inScope(token.name())) {
+ parseError(token);
+ processFakeStartTag(pTag);
+ ASSERT(m_tree.openElements()->inScope(token.name()));
+ processEndTag(token);
+ return;
+ }
+ m_tree.generateImpliedEndTagsWithExclusion(token.name());
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ return;
+ }
+ if (token.name() == liTag) {
+ if (!m_tree.openElements()->inListItemScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTagsWithExclusion(token.name());
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ return;
+ }
+ if (token.name() == ddTag
+ || token.name() == dtTag) {
+ if (!m_tree.openElements()->inScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTagsWithExclusion(token.name());
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ return;
+ }
+ if (isNumberedHeaderTag(token.name())) {
+ if (!m_tree.openElements()->inScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ return;
+ }
+ if (token.name() == "sarcasm") {
+ notImplemented(); // Take a deep breath.
+ return;
+ }
+ if (isFormattingTag(token.name())) {
+ callTheAdoptionAgency(token);
+ return;
+ }
+ if (token.name() == appletTag
+ || token.name() == marqueeTag
+ || token.name() == objectTag) {
+ if (!m_tree.openElements()->inScope(token.name())) {
+ parseError(token);
+ return;
+ }
+ m_tree.generateImpliedEndTags();
+ if (!m_tree.currentElement()->hasLocalName(token.name()))
+ parseError(token);
+ m_tree.openElements()->popUntilPopped(token.name());
+ m_tree.activeFormattingElements()->clearToLastMarker();
+ return;
+ }
+ if (token.name() == brTag) {
+ parseError(token);
+ processFakeStartTag(brTag);
+ return;
+ }
+ processAnyOtherEndTagForInBody(token);
+}
+
+bool HTMLTreeBuilder::processCaptionEndTagForInCaption()
+{
+ if (!m_tree.openElements()->inTableScope(captionTag.localName())) {
+ ASSERT(m_isParsingFragment);
+ // FIXME: parse error
+ return false;
+ }
+ m_tree.generateImpliedEndTags();
+ // FIXME: parse error if (!m_tree.currentElement()->hasTagName(captionTag))
+ m_tree.openElements()->popUntilPopped(captionTag.localName());
+ m_tree.activeFormattingElements()->clearToLastMarker();
+ setInsertionMode(InTableMode);
+ return true;
+}
+
+bool HTMLTreeBuilder::processTrEndTagForInRow()
+{
+ if (!m_tree.openElements()->inTableScope(trTag.localName())) {
+ ASSERT(m_isParsingFragment);
+ // FIXME: parse error
+ return false;
+ }
+ m_tree.openElements()->popUntilTableRowScopeMarker();
+ ASSERT(m_tree.currentElement()->hasTagName(trTag));
+ m_tree.openElements()->pop();
+ setInsertionMode(InTableBodyMode);
+ return true;
+}
+
+bool HTMLTreeBuilder::processTableEndTagForInTable()
+{
+ if (!m_tree.openElements()->inTableScope(tableTag)) {
+ ASSERT(m_isParsingFragment);
+ // FIXME: parse error.
+ return false;
+ }
+ m_tree.openElements()->popUntilPopped(tableTag.localName());
+ resetInsertionModeAppropriately();
+ return true;
+}
+
+void HTMLTreeBuilder::processEndTagForInTable(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::EndTag);
+ if (token.name() == tableTag) {
+ processTableEndTagForInTable();
+ return;
+ }
+ if (token.name() == bodyTag
+ || isCaptionColOrColgroupTag(token.name())
+ || token.name() == htmlTag
+ || isTableBodyContextTag(token.name())
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag) {
+ parseError(token);
+ return;
+ }
+ // Is this redirection necessary here?
+ HTMLConstructionSite::RedirectToFosterParentGuard redirecter(m_tree, requiresRedirectToFosterParent(m_tree.currentElement()));
+ processEndTagForInBody(token);
}
void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
{
+ ASSERT(token.type() == HTMLToken::EndTag);
switch (insertionMode()) {
case InitialMode:
ASSERT(insertionMode() == InitialMode);
@@ -1050,7 +2122,7 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
// Fall through.
case BeforeHeadMode:
ASSERT(insertionMode() == BeforeHeadMode);
- if (token.name() != headTag && token.name() != bodyTag && token.name() != brTag) {
+ if (token.name() != headTag && token.name() != bodyTag && token.name() != htmlTag && token.name() != brTag) {
parseError(token);
return;
}
@@ -1059,7 +2131,7 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
case InHeadMode:
ASSERT(insertionMode() == InHeadMode);
if (token.name() == headTag) {
- m_openElements.popHTMLHeadElement();
+ m_tree.openElements()->popHTMLHeadElement();
setInsertionMode(AfterHeadMode);
return;
}
@@ -1079,123 +2151,66 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
// Fall through
case InBodyMode:
ASSERT(insertionMode() == InBodyMode);
- if (token.name() == bodyTag) {
- processBodyEndTagForInBody(token);
- return;
- }
- if (token.name() == htmlTag) {
- if (processBodyEndTagForInBody(token))
- processEndTag(token);
- return;
- }
- if (token.name() == addressTag || token.name() == articleTag || token.name() == asideTag || token.name() == blockquoteTag || token.name() == buttonTag || token.name() == centerTag || token.name() == "details" || token.name() == dirTag || token.name() == divTag || token.name() == dlTag || token.name() == fieldsetTag || token.name() == "figure" || token.name() == footerTag || token.name() == headerTag || token.name() == hgroupTag || token.name() == listingTag || token.name() == menuTag || token.name() == navTag || token.name() == olTag || token.name() == preTag || token.name() == sectionTag || token.name() == ulTag) {
- if (!m_openElements.inScope(token.name())) {
- parseError(token);
- return;
- }
- generateImpliedEndTags();
- if (currentElement()->tagQName() != token.name())
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
- }
- if (token.name() == formTag) {
- RefPtr<Element> node = m_formElement.release();
- if (!node || !m_openElements.inScope(node.get())) {
- parseError(token);
- return;
- }
- generateImpliedEndTags();
- if (currentElement() != node.get())
- parseError(token);
- m_openElements.remove(node.get());
- }
- if (token.name() == pTag) {
- if (!m_openElements.inScope(token.name())) {
- parseError(token);
- notImplemented();
- return;
- }
- generateImpliedEndTagsWithExclusion(token.name());
- if (!currentElement()->hasLocalName(token.name()))
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
- return;
- }
- if (token.name() == liTag) {
- if (!m_openElements.inListItemScope(token.name())) {
- parseError(token);
- return;
- }
- generateImpliedEndTagsWithExclusion(token.name());
- if (!currentElement()->hasLocalName(token.name()))
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
- return;
- }
- if (token.name() == ddTag || token.name() == dtTag) {
- if (!m_openElements.inScope(token.name())) {
- parseError(token);
- return;
- }
- generateImpliedEndTagsWithExclusion(token.name());
- if (!currentElement()->hasLocalName(token.name()))
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
+ processEndTagForInBody(token);
+ break;
+ case InTableMode:
+ ASSERT(insertionMode() == InTableMode);
+ processEndTagForInTable(token);
+ break;
+ case InCaptionMode:
+ ASSERT(insertionMode() == InCaptionMode);
+ if (token.name() == captionTag) {
+ processCaptionEndTagForInCaption();
return;
}
- if (isNumberedHeaderTag(token.name())) {
- if (!m_openElements.inScope(token.name())) {
- parseError(token);
+ if (token.name() == tableTag) {
+ parseError(token);
+ if (!processCaptionEndTagForInCaption()) {
+ ASSERT(m_isParsingFragment);
return;
}
- generateImpliedEndTags();
- if (!currentElement()->hasLocalName(token.name()))
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
- return;
- }
- if (token.name() == "sarcasm") {
- notImplemented(); // Take a deep breath.
+ processEndTag(token);
return;
}
- if (isFormattingTag(token.name())) {
- callTheAdoptionAgency(token);
+ if (token.name() == bodyTag
+ || token.name() == colTag
+ || token.name() == colgroupTag
+ || token.name() == htmlTag
+ || isTableBodyContextTag(token.name())
+ || isTableCellContextTag(token.name())
+ || token.name() == trTag) {
+ parseError(token);
return;
}
- if (token.name() == appletTag || token.name() == marqueeTag || token.name() == objectTag) {
- if (!m_openElements.inScope(token.name())) {
- parseError(token);
- return;
- }
- generateImpliedEndTags();
- if (currentElement()->tagQName() != token.name())
- parseError(token);
- m_openElements.popUntil(token.name());
- m_openElements.pop();
- m_activeFormattingElements.clearToLastMarker();
+ processEndTagForInBody(token);
+ break;
+ case InColumnGroupMode:
+ ASSERT(insertionMode() == InColumnGroupMode);
+ if (token.name() == colgroupTag) {
+ processColgroupEndTagForInColumnGroup();
return;
}
- if (token.name() == brTag) {
+ if (token.name() == colTag) {
parseError(token);
- reconstructTheActiveFormattingElements();
- // Notice that we lose the attributes.
- AtomicHTMLToken startBr(HTMLToken::StartTag, token.name());
- insertSelfClosingElement(startBr);
- m_framesetOk = false;
return;
}
- // FIXME: We need an iterator over m_openElements to implement this
- // correctly.
- notImplemented();
- if (!m_openElements.inScope(token.name()))
+ if (!processColgroupEndTagForInColumnGroup()) {
+ ASSERT(m_isParsingFragment);
return;
- m_openElements.popUntil(token.name());
- m_openElements.pop();
+ }
+ processEndTag(token);
+ break;
+ case InRowMode:
+ ASSERT(insertionMode() == InRowMode);
+ processEndTagForInRow(token);
+ break;
+ case InCellMode:
+ ASSERT(insertionMode() == InCellMode);
+ processEndTagForInCell(token);
+ break;
+ case InTableBodyMode:
+ ASSERT(insertionMode() == InTableBodyMode);
+ processEndTagForInTableBody(token);
break;
case AfterBodyMode:
ASSERT(insertionMode() == AfterBodyMode);
@@ -1204,22 +2219,22 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
parseError(token);
return;
}
- m_insertionMode = AfterAfterBodyMode;
+ setInsertionMode(AfterAfterBodyMode);
return;
}
// Fall through.
case AfterAfterBodyMode:
ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode);
parseError(token);
- m_insertionMode = InBodyMode;
+ setInsertionMode(InBodyMode);
processEndTag(token);
break;
case InHeadNoscriptMode:
ASSERT(insertionMode() == InHeadNoscriptMode);
if (token.name() == noscriptTag) {
- ASSERT(currentElement()->tagQName() == noscriptTag);
- m_openElements.pop();
- ASSERT(currentElement()->tagQName() == headTag);
+ ASSERT(m_tree.currentElement()->hasTagName(noscriptTag));
+ m_tree.openElements()->pop();
+ ASSERT(m_tree.currentElement()->hasTagName(headTag));
setInsertionMode(InHeadMode);
return;
}
@@ -1234,32 +2249,32 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
if (token.name() == scriptTag) {
// Pause ourselves so that parsing stops until the script can be processed by the caller.
m_isPaused = true;
- ASSERT(currentElement()->tagQName() == scriptTag);
- m_scriptToProcess = currentElement();
- m_openElements.pop();
- m_insertionMode = m_originalInsertionMode;
+ ASSERT(m_tree.currentElement()->hasTagName(scriptTag));
+ m_scriptToProcess = m_tree.currentElement();
+ m_tree.openElements()->pop();
+ setInsertionMode(m_originalInsertionMode);
return;
}
- m_openElements.pop();
- m_insertionMode = m_originalInsertionMode;
+ m_tree.openElements()->pop();
+ setInsertionMode(m_originalInsertionMode);
break;
case InFramesetMode:
ASSERT(insertionMode() == InFramesetMode);
if (token.name() == framesetTag) {
- if (currentElement() == m_openElements.htmlElement()) {
+ if (m_tree.currentElement() == m_tree.openElements()->htmlElement()) {
parseError(token);
return;
}
- m_openElements.pop();
- if (!m_isParsingFragment && !currentElement()->hasTagName(framesetTag))
- m_insertionMode = AfterFramesetMode;
+ m_tree.openElements()->pop();
+ if (!m_isParsingFragment && !m_tree.currentElement()->hasTagName(framesetTag))
+ setInsertionMode(AfterFramesetMode);
return;
}
break;
case AfterFramesetMode:
ASSERT(insertionMode() == AfterFramesetMode);
if (token.name() == htmlTag) {
- m_insertionMode = AfterAfterFramesetMode;
+ setInsertionMode(AfterAfterFramesetMode);
return;
}
// Fall through.
@@ -1267,87 +2282,296 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
parseError(token);
break;
- default:
- notImplemented();
+ case InSelectInTableMode:
+ ASSERT(insertionMode() == InSelectInTableMode);
+ if (token.name() == captionTag
+ || token.name() == tableTag
+ || isTableBodyContextTag(token.name())
+ || token.name() == trTag
+ || isTableCellContextTag(token.name())) {
+ parseError(token);
+ if (m_tree.openElements()->inTableScope(token.name())) {
+ AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
+ processEndTag(endSelect);
+ processEndTag(token);
+ }
+ return;
+ }
+ // Fall through.
+ case InSelectMode:
+ ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode);
+ if (token.name() == optgroupTag) {
+ if (m_tree.currentElement()->hasTagName(optionTag) && m_tree.oneBelowTop()->hasTagName(optgroupTag))
+ processFakeEndTag(optionTag);
+ if (m_tree.currentElement()->hasTagName(optgroupTag)) {
+ m_tree.openElements()->pop();
+ return;
+ }
+ parseError(token);
+ return;
+ }
+ if (token.name() == optionTag) {
+ if (m_tree.currentElement()->hasTagName(optionTag)) {
+ m_tree.openElements()->pop();
+ return;
+ }
+ parseError(token);
+ return;
+ }
+ if (token.name() == selectTag) {
+ notImplemented(); // fragment case
+ m_tree.openElements()->popUntilPopped(selectTag.localName());
+ resetInsertionModeAppropriately();
+ return;
+ }
+ break;
+ case InTableTextMode:
+ processDefaultForInTableTextMode(token);
+ processEndTag(token);
+ break;
+ case InForeignContentMode:
+ if (token.name() == SVGNames::scriptTag && m_tree.currentElement()->hasTagName(SVGNames::scriptTag)) {
+ notImplemented();
+ return;
+ }
+ if (m_tree.currentElement()->namespaceURI() != xhtmlNamespaceURI) {
+ // FIXME: This code just wants an Element* iterator, instead of an ElementRecord*
+ HTMLElementStack::ElementRecord* nodeRecord = m_tree.openElements()->topRecord();
+ if (!nodeRecord->element()->hasLocalName(token.name())) {
+ parseError(token);
+ // FIXME: This return is not in the spec but appears to be needed.
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10118
+ return;
+ }
+ while (1) {
+ if (nodeRecord->element()->hasLocalName(token.name())) {
+ m_tree.openElements()->popUntilPopped(nodeRecord->element());
+ return;
+ }
+ nodeRecord = nodeRecord->next();
+ if (nodeRecord->element()->namespaceURI() == xhtmlNamespaceURI)
+ processUsingSecondaryInsertionModeAndAdjustInsertionMode(token);
+ }
+ return;
+ }
+ processUsingSecondaryInsertionModeAndAdjustInsertionMode(token);
+ break;
+ }
+}
+
+class HTMLTreeBuilder::FakeInsertionMode : public Noncopyable {
+public:
+ FakeInsertionMode(HTMLTreeBuilder* treeBuilder, InsertionMode mode)
+ : m_treeBuilder(treeBuilder)
+ , m_originalMode(treeBuilder->insertionMode())
+ {
+ m_treeBuilder->setFakeInsertionMode(mode);
+ }
+
+ ~FakeInsertionMode()
+ {
+ if (m_treeBuilder->isFakeInsertionMode())
+ m_treeBuilder->setInsertionMode(m_originalMode);
+ }
+
+private:
+ HTMLTreeBuilder* m_treeBuilder;
+ InsertionMode m_originalMode;
+};
+
+// This handles both secondary insertion mode processing, as well as updating
+// the insertion mode. These are separate steps in the spec, but always occur
+// right after one another.
+void HTMLTreeBuilder::processUsingSecondaryInsertionModeAndAdjustInsertionMode(AtomicHTMLToken& token)
+{
+ ASSERT(token.type() == HTMLToken::StartTag || token.type() == HTMLToken::EndTag);
+ {
+ FakeInsertionMode fakeMode(this, m_secondaryInsertionMode);
+ processToken(token);
}
+ if (insertionMode() == InForeignContentMode && m_tree.openElements()->hasOnlyHTMLElementsInScope())
+ setInsertionMode(m_secondaryInsertionMode);
}
void HTMLTreeBuilder::processComment(AtomicHTMLToken& token)
{
- if (m_insertionMode == InitialMode || m_insertionMode == BeforeHTMLMode || m_insertionMode == AfterAfterBodyMode || m_insertionMode == AfterAfterFramesetMode) {
- insertCommentOnDocument(token);
+ ASSERT(token.type() == HTMLToken::Comment);
+ if (m_insertionMode == InitialMode
+ || m_insertionMode == BeforeHTMLMode
+ || m_insertionMode == AfterAfterBodyMode
+ || m_insertionMode == AfterAfterFramesetMode) {
+ m_tree.insertCommentOnDocument(token);
return;
}
if (m_insertionMode == AfterBodyMode) {
- insertCommentOnHTMLHtmlElement(token);
+ m_tree.insertCommentOnHTMLHtmlElement(token);
+ return;
+ }
+ if (m_insertionMode == InTableTextMode) {
+ processDefaultForInTableTextMode(token);
+ processComment(token);
return;
}
- insertComment(token);
+ m_tree.insertComment(token);
}
void HTMLTreeBuilder::processCharacter(AtomicHTMLToken& token)
{
- // FIXME: We need to figure out how to handle each character individually.
+ ASSERT(token.type() == HTMLToken::Character);
+
+ // FIXME: Currently this design has an extra memcpy because we copy the
+ // characters out of the HTMLTokenizer's buffer into the AtomicHTMLToken
+ // and then into the text node. What we'd really like is to copy directly
+ // from the HTMLTokenizer's buffer into the text node.
+ ExternalCharacterTokenBuffer buffer(token);
+
+ReprocessBuffer:
switch (insertionMode()) {
- case InitialMode:
+ case InitialMode: {
ASSERT(insertionMode() == InitialMode);
- notImplemented();
+ buffer.skipLeadingWhitespace();
+ if (buffer.isEmpty())
+ return;
processDefaultForInitialMode(token);
// Fall through.
- case BeforeHTMLMode:
+ }
+ case BeforeHTMLMode: {
ASSERT(insertionMode() == BeforeHTMLMode);
- notImplemented();
+ buffer.skipLeadingWhitespace();
+ if (buffer.isEmpty())
+ return;
processDefaultForBeforeHTMLMode(token);
// Fall through.
- case BeforeHeadMode:
+ }
+ case BeforeHeadMode: {
ASSERT(insertionMode() == BeforeHeadMode);
- notImplemented();
+ buffer.skipLeadingWhitespace();
+ if (buffer.isEmpty())
+ return;
processDefaultForBeforeHeadMode(token);
// Fall through.
- case InHeadMode:
+ }
+ case InHeadMode: {
ASSERT(insertionMode() == InHeadMode);
- notImplemented();
+ String leadingWhitespace = buffer.takeLeadingWhitespace();
+ if (!leadingWhitespace.isEmpty())
+ m_tree.insertTextNode(leadingWhitespace);
+ if (buffer.isEmpty())
+ return;
processDefaultForInHeadMode(token);
// Fall through.
- case AfterHeadMode:
+ }
+ case AfterHeadMode: {
ASSERT(insertionMode() == AfterHeadMode);
- notImplemented();
+ String leadingWhitespace = buffer.takeLeadingWhitespace();
+ if (!leadingWhitespace.isEmpty())
+ m_tree.insertTextNode(leadingWhitespace);
+ if (buffer.isEmpty())
+ return;
processDefaultForAfterHeadMode(token);
- // Fall through
+ // Fall through.
+ }
case InBodyMode:
- ASSERT(insertionMode() == InBodyMode);
- notImplemented();
- insertTextNode(token);
+ case InCaptionMode:
+ case InCellMode: {
+ ASSERT(insertionMode() == InBodyMode || insertionMode() == InCaptionMode || insertionMode() == InCellMode);
+ m_tree.reconstructTheActiveFormattingElements();
+ String characters = buffer.takeRemaining();
+ m_tree.insertTextNode(characters);
+ if (m_framesetOk && hasNonWhitespace(characters))
+ m_framesetOk = false;
break;
+ }
+ case InTableMode:
+ case InTableBodyMode:
+ case InRowMode: {
+ ASSERT(insertionMode() == InTableMode || insertionMode() == InTableBodyMode || insertionMode() == InRowMode);
+ ASSERT(m_pendingTableCharacters.isEmpty());
+ m_originalInsertionMode = m_insertionMode;
+ setInsertionMode(InTableTextMode);
+ // Fall through.
+ }
+ case InTableTextMode: {
+ buffer.giveRemainingTo(m_pendingTableCharacters);
+ break;
+ }
+ case InColumnGroupMode: {
+ ASSERT(insertionMode() == InColumnGroupMode);
+ String leadingWhitespace = buffer.takeLeadingWhitespace();
+ if (!leadingWhitespace.isEmpty())
+ m_tree.insertTextNode(leadingWhitespace);
+ if (buffer.isEmpty())
+ return;
+ if (!processColgroupEndTagForInColumnGroup()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ goto ReprocessBuffer;
+ }
case AfterBodyMode:
- case AfterAfterBodyMode:
+ case AfterAfterBodyMode: {
ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode);
parseError(token);
- m_insertionMode = InBodyMode;
- processCharacter(token);
+ setInsertionMode(InBodyMode);
+ goto ReprocessBuffer;
break;
- case TextMode:
- notImplemented();
- insertTextNode(token);
+ }
+ case TextMode: {
+ ASSERT(insertionMode() == TextMode);
+ m_tree.insertTextNode(buffer.takeRemaining());
break;
- case InHeadNoscriptMode:
+ }
+ case InHeadNoscriptMode: {
ASSERT(insertionMode() == InHeadNoscriptMode);
+ String leadingWhitespace = buffer.takeLeadingWhitespace();
+ if (!leadingWhitespace.isEmpty())
+ m_tree.insertTextNode(leadingWhitespace);
+ if (buffer.isEmpty())
+ return;
processDefaultForInHeadNoscriptMode(token);
- processToken(token);
+ goto ReprocessBuffer;
break;
+ }
case InFramesetMode:
- case AfterFramesetMode:
- case AfterAfterFramesetMode:
+ case AfterFramesetMode: {
ASSERT(insertionMode() == InFramesetMode || insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
- parseError(token);
+ String leadingWhitespace = buffer.takeRemainingWhitespace();
+ if (!leadingWhitespace.isEmpty())
+ m_tree.insertTextNode(leadingWhitespace);
+ // FIXME: We should generate a parse error if we skipped over any
+ // non-whitespace characters.
+ break;
+ }
+ case InSelectInTableMode:
+ case InSelectMode: {
+ ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode);
+ m_tree.insertTextNode(buffer.takeRemaining());
break;
- default:
- notImplemented();
+ }
+ case InForeignContentMode: {
+ ASSERT(insertionMode() == InForeignContentMode);
+ String characters = buffer.takeRemaining();
+ m_tree.insertTextNode(characters);
+ if (m_framesetOk && hasNonWhitespace(characters))
+ m_framesetOk = false;
+ break;
+ }
+ case AfterAfterFramesetMode: {
+ String leadingWhitespace = buffer.takeRemainingWhitespace();
+ if (!leadingWhitespace.isEmpty()) {
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertTextNode(leadingWhitespace);
+ }
+ // FIXME: We should generate a parse error if we skipped over any
+ // non-whitespace characters.
+ break;
+ }
}
}
void HTMLTreeBuilder::processEndOfFile(AtomicHTMLToken& token)
{
+ ASSERT(token.type() == HTMLToken::EndOfFile);
switch (insertionMode()) {
case InitialMode:
ASSERT(insertionMode() == InitialMode);
@@ -1370,7 +2594,8 @@ void HTMLTreeBuilder::processEndOfFile(AtomicHTMLToken& token)
processDefaultForAfterHeadMode(token);
// Fall through
case InBodyMode:
- ASSERT(insertionMode() == InBodyMode);
+ case InCellMode:
+ ASSERT(insertionMode() == InBodyMode || insertionMode() == InCellMode);
notImplemented();
break;
case AfterBodyMode:
@@ -1383,17 +2608,47 @@ void HTMLTreeBuilder::processEndOfFile(AtomicHTMLToken& token)
processDefaultForInHeadNoscriptMode(token);
processToken(token);
break;
- case InFramesetMode:
- ASSERT(insertionMode() == InFramesetMode);
- if (currentElement() != m_openElements.htmlElement())
- parseError(token);
- break;
case AfterFramesetMode:
case AfterAfterFramesetMode:
ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
break;
- default:
+ case InFramesetMode:
+ case InTableMode:
+ case InTableBodyMode:
+ case InSelectInTableMode:
+ case InSelectMode:
+ ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode || insertionMode() == InTableMode || insertionMode() == InFramesetMode || insertionMode() == InTableBodyMode);
+ if (m_tree.currentElement() != m_tree.openElements()->htmlElement())
+ parseError(token);
+ break;
+ case InColumnGroupMode:
+ if (m_tree.currentElement() == m_tree.openElements()->htmlElement()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ if (!processColgroupEndTagForInColumnGroup()) {
+ ASSERT(m_isParsingFragment);
+ return;
+ }
+ processEndOfFile(token);
+ break;
+ case InForeignContentMode:
+ parseError(token);
+ // FIXME: Following the spec would infinitely recurse on <svg><svg>
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10115
+ m_tree.openElements()->popUntilElementWithNamespace(xhtmlNamespaceURI);
+ setInsertionMode(m_secondaryInsertionMode);
+ processEndOfFile(token);
+ break;
+ case InTableTextMode:
+ processDefaultForInTableTextMode(token);
+ processEndOfFile(token);
+ break;
+ case TextMode:
+ case InCaptionMode:
+ case InRowMode:
notImplemented();
+ break;
}
}
@@ -1407,7 +2662,7 @@ void HTMLTreeBuilder::processDefaultForInitialMode(AtomicHTMLToken& token)
void HTMLTreeBuilder::processDefaultForBeforeHTMLMode(AtomicHTMLToken&)
{
AtomicHTMLToken startHTML(HTMLToken::StartTag, htmlTag.localName());
- insertHTMLStartTagBeforeHTML(startHTML);
+ m_tree.insertHTMLHtmlStartTagBeforeHTML(startHTML);
setInsertionMode(BeforeHeadMode);
}
@@ -1436,37 +2691,57 @@ void HTMLTreeBuilder::processDefaultForAfterHeadMode(AtomicHTMLToken&)
m_framesetOk = true;
}
+void HTMLTreeBuilder::processDefaultForInTableTextMode(AtomicHTMLToken& token)
+{
+ String characters = String::adopt(m_pendingTableCharacters);
+ if (hasNonWhitespace(characters)) {
+ parseError(token);
+ HTMLConstructionSite::RedirectToFosterParentGuard redirecter(m_tree, requiresRedirectToFosterParent(m_tree.currentElement()));
+ m_tree.reconstructTheActiveFormattingElements();
+ m_tree.insertTextNode(characters);
+ m_framesetOk = false;
+ setInsertionMode(m_originalInsertionMode);
+ return;
+ }
+ m_tree.insertTextNode(characters);
+ setInsertionMode(m_originalInsertionMode);
+}
+
bool HTMLTreeBuilder::processStartTagForInHead(AtomicHTMLToken& token)
{
+ ASSERT(token.type() == HTMLToken::StartTag);
if (token.name() == htmlTag) {
- insertHTMLStartTagInBody(token);
+ m_tree.insertHTMLHtmlStartTagInBody(token);
return true;
}
// FIXME: Atomize "command".
- if (token.name() == baseTag || token.name() == "command" || token.name() == linkTag || token.name() == metaTag) {
- insertSelfClosingElement(token);
+ if (token.name() == baseTag
+ || token.name() == "command"
+ || token.name() == linkTag
+ || token.name() == metaTag) {
+ m_tree.insertSelfClosingHTMLElement(token);
// Note: The custom processing for the <meta> tag is done in HTMLMetaElement::process().
return true;
}
if (token.name() == titleTag) {
- insertGenericRCDATAElement(token);
+ processGenericRCDATAStartTag(token);
return true;
}
if (token.name() == noscriptTag) {
if (isScriptingFlagEnabled(m_document->frame())) {
- insertGenericRawTextElement(token);
+ processGenericRawTextStartTag(token);
return true;
}
- insertElement(token);
+ m_tree.insertHTMLElement(token);
setInsertionMode(InHeadNoscriptMode);
return true;
}
if (token.name() == noframesTag || token.name() == styleTag) {
- insertGenericRawTextElement(token);
+ processGenericRawTextStartTag(token);
return true;
}
if (token.name() == scriptTag) {
- insertScriptElement(token);
+ processScriptStartTag(token);
return true;
}
if (token.name() == headTag) {
@@ -1476,176 +2751,31 @@ bool HTMLTreeBuilder::processStartTagForInHead(AtomicHTMLToken& token)
return false;
}
-void HTMLTreeBuilder::insertDoctype(AtomicHTMLToken& token)
-{
- ASSERT(token.type() == HTMLToken::DOCTYPE);
- attach(m_document, DocumentType::create(m_document, token.name(), String::adopt(token.publicIdentifier()), String::adopt(token.systemIdentifier())));
- // FIXME: Move quirks mode detection from DocumentType element to here.
- notImplemented();
- if (token.forceQuirks())
- m_document->setParseMode(Document::Compat);
-}
-
-void HTMLTreeBuilder::insertComment(AtomicHTMLToken& token)
-{
- ASSERT(token.type() == HTMLToken::Comment);
- attach(currentElement(), Comment::create(m_document, token.comment()));
-}
-
-void HTMLTreeBuilder::insertCommentOnDocument(AtomicHTMLToken& token)
-{
- ASSERT(token.type() == HTMLToken::Comment);
- attach(m_document, Comment::create(m_document, token.comment()));
-}
-
-void HTMLTreeBuilder::insertCommentOnHTMLHtmlElement(AtomicHTMLToken& token)
-{
- ASSERT(token.type() == HTMLToken::Comment);
- attach(m_openElements.htmlElement(), Comment::create(m_document, token.comment()));
-}
-
-PassRefPtr<Element> HTMLTreeBuilder::createElementAndAttachToCurrent(AtomicHTMLToken& token)
+void HTMLTreeBuilder::processGenericRCDATAStartTag(AtomicHTMLToken& token)
{
ASSERT(token.type() == HTMLToken::StartTag);
- return attach(currentElement(), createElement(token));
-}
-
-void HTMLTreeBuilder::insertHTMLHtmlElement(AtomicHTMLToken& token)
-{
- m_openElements.pushHTMLHtmlElement(createElementAndAttachToCurrent(token));
-}
-
-void HTMLTreeBuilder::insertHTMLHeadElement(AtomicHTMLToken& token)
-{
- m_headElement = createElementAndAttachToCurrent(token);
- m_openElements.pushHTMLHeadElement(m_headElement);
-}
-
-void HTMLTreeBuilder::insertHTMLBodyElement(AtomicHTMLToken& token)
-{
- m_openElements.pushHTMLBodyElement(createElementAndAttachToCurrent(token));
-}
-
-void HTMLTreeBuilder::insertElement(AtomicHTMLToken& token)
-{
- m_openElements.push(createElementAndAttachToCurrent(token));
-}
-
-void HTMLTreeBuilder::insertSelfClosingElement(AtomicHTMLToken& token)
-{
- ASSERT(token.type() == HTMLToken::StartTag);
- attach(currentElement(), createElement(token));
- // FIXME: Do we want to acknowledge the token's self-closing flag?
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#acknowledge-self-closing-flag
-}
-
-void HTMLTreeBuilder::insertFormattingElement(AtomicHTMLToken& token)
-{
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#the-stack-of-open-elements
- // Possible active formatting elements include:
- // a, b, big, code, em, font, i, nobr, s, small, strike, strong, tt, and u.
- insertElement(token);
- m_activeFormattingElements.append(currentElement());
-}
-
-void HTMLTreeBuilder::insertGenericRCDATAElement(AtomicHTMLToken& token)
-{
- insertElement(token);
+ m_tree.insertHTMLElement(token);
m_tokenizer->setState(HTMLTokenizer::RCDATAState);
m_originalInsertionMode = m_insertionMode;
- m_insertionMode = TextMode;
+ setInsertionMode(TextMode);
}
-void HTMLTreeBuilder::insertGenericRawTextElement(AtomicHTMLToken& token)
+void HTMLTreeBuilder::processGenericRawTextStartTag(AtomicHTMLToken& token)
{
- insertElement(token);
+ ASSERT(token.type() == HTMLToken::StartTag);
+ m_tree.insertHTMLElement(token);
m_tokenizer->setState(HTMLTokenizer::RAWTEXTState);
m_originalInsertionMode = m_insertionMode;
- m_insertionMode = TextMode;
+ setInsertionMode(TextMode);
}
-void HTMLTreeBuilder::insertScriptElement(AtomicHTMLToken& token)
+void HTMLTreeBuilder::processScriptStartTag(AtomicHTMLToken& token)
{
- ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag);
- RefPtr<HTMLScriptElement> element = HTMLScriptElement::create(scriptTag, m_document, true);
- element->setAttributeMap(token.attributes(), m_fragmentScriptingPermission);
- m_openElements.push(attach(currentElement(), element.release()));
+ ASSERT(token.type() == HTMLToken::StartTag);
+ m_tree.insertScriptElement(token);
m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
m_originalInsertionMode = m_insertionMode;
- m_insertionMode = TextMode;
-}
-
-void HTMLTreeBuilder::insertTextNode(AtomicHTMLToken& token)
-{
- attach(currentElement(), Text::create(m_document, token.characters()));
-}
-
-PassRefPtr<Element> HTMLTreeBuilder::createElement(AtomicHTMLToken& token)
-{
- RefPtr<Element> element = HTMLElementFactory::createHTMLElement(QualifiedName(nullAtom, token.name(), xhtmlNamespaceURI), m_document, 0);
- element->setAttributeMap(token.attributes(), m_fragmentScriptingPermission);
- return element.release();
-}
-
-bool HTMLTreeBuilder::indexOfFirstUnopenFormattingElement(unsigned& firstUnopenElementIndex) const
-{
- if (m_activeFormattingElements.isEmpty())
- return false;
- unsigned index = m_activeFormattingElements.size();
- do {
- --index;
- const HTMLFormattingElementList::Entry& entry = m_activeFormattingElements[index];
- if (entry.isMarker() || m_openElements.contains(entry.element())) {
- firstUnopenElementIndex = index;
- return true;
- }
- } while (index);
- return false;
-}
-
-void HTMLTreeBuilder::reconstructTheActiveFormattingElements()
-{
- unsigned firstUnopenElementIndex;
- if (!indexOfFirstUnopenFormattingElement(firstUnopenElementIndex))
- return;
-
- unsigned unopenEntryIndex = firstUnopenElementIndex;
- ASSERT(unopenEntryIndex < m_activeFormattingElements.size());
- for (; unopenEntryIndex < m_activeFormattingElements.size(); ++unopenEntryIndex) {
- HTMLFormattingElementList::Entry& unopenedEntry = m_activeFormattingElements[unopenEntryIndex];
- // FIXME: We're supposed to save the original token in the entry.
- AtomicHTMLToken fakeToken(HTMLToken::StartTag, unopenedEntry.element()->localName());
- insertElement(fakeToken);
- unopenedEntry.replaceElement(currentElement());
- }
-}
-
-namespace {
-
-bool hasImpliedEndTag(Element* element)
-{
- return element->hasTagName(ddTag)
- || element->hasTagName(dtTag)
- || element->hasTagName(liTag)
- || element->hasTagName(optionTag)
- || element->hasTagName(optgroupTag)
- || element->hasTagName(pTag)
- || element->hasTagName(rpTag)
- || element->hasTagName(rtTag);
-}
-
-}
-
-void HTMLTreeBuilder::generateImpliedEndTagsWithExclusion(const AtomicString& tagName)
-{
- while (hasImpliedEndTag(currentElement()) && !currentElement()->hasLocalName(tagName))
- m_openElements.pop();
-}
-
-void HTMLTreeBuilder::generateImpliedEndTags()
-{
- while (hasImpliedEndTag(currentElement()))
- m_openElements.pop();
+ setInsertionMode(TextMode);
}
void HTMLTreeBuilder::finished()
@@ -1657,9 +2787,6 @@ void HTMLTreeBuilder::finished()
return;
}
- AtomicHTMLToken eofToken(HTMLToken::EndOfFile, nullAtom);
- processToken(eofToken);
-
// Warning, this may delete the parser, so don't try to do anything else after this.
if (!m_isParsingFragment)
m_document->finishedParsing();
diff --git a/WebCore/html/HTMLTreeBuilder.h b/WebCore/html/HTMLTreeBuilder.h
index 37e4279..74e3398 100644
--- a/WebCore/html/HTMLTreeBuilder.h
+++ b/WebCore/html/HTMLTreeBuilder.h
@@ -28,6 +28,7 @@
#include "Element.h"
#include "FragmentScriptingPermission.h"
+#include "HTMLConstructionSite.h"
#include "HTMLElementStack.h"
#include "HTMLFormattingElementList.h"
#include "HTMLTokenizer.h"
@@ -74,6 +75,7 @@ public:
LegacyHTMLTreeBuilder* legacyTreeBuilder() const { return m_legacyTreeBuilder.get(); }
private:
+ class FakeInsertionMode;
// Represents HTML5 "insertion mode"
// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#insertion-mode
enum InsertionMode {
@@ -104,8 +106,8 @@ private:
void passTokenToLegacyParser(HTMLToken&);
- // Specialized functions for processing the different types of tokens.
void processToken(AtomicHTMLToken&);
+
void processDoctypeToken(AtomicHTMLToken&);
void processStartTag(AtomicHTMLToken&);
void processEndTag(AtomicHTMLToken&);
@@ -113,72 +115,57 @@ private:
void processCharacter(AtomicHTMLToken&);
void processEndOfFile(AtomicHTMLToken&);
+ bool processStartTagForInHead(AtomicHTMLToken&);
+ void processStartTagForInBody(AtomicHTMLToken&);
+ void processStartTagForInTable(AtomicHTMLToken&);
+ void processEndTagForInBody(AtomicHTMLToken&);
+ void processEndTagForInTable(AtomicHTMLToken&);
+ void processEndTagForInTableBody(AtomicHTMLToken&);
+ void processEndTagForInRow(AtomicHTMLToken&);
+ void processEndTagForInCell(AtomicHTMLToken&);
+
+ void processIsindexStartTagForInBody(AtomicHTMLToken&);
+ bool processBodyEndTagForInBody(AtomicHTMLToken&);
+ bool processTableEndTagForInTable();
+ bool processCaptionEndTagForInCaption();
+ bool processColgroupEndTagForInColumnGroup();
+ bool processTrEndTagForInRow();
+ // FIXME: This function should be inlined into its one call site or it
+ // needs to assert which tokens it can be called with.
+ void processAnyOtherEndTagForInBody(AtomicHTMLToken&);
+
+ void processFakeStartTag(const QualifiedName&, PassRefPtr<NamedNodeMap> attributes = 0);
+ void processFakeEndTag(const QualifiedName&);
+ void processFakeCharacters(const String&);
+ void processFakePEndTagIfPInScope();
+
+ void processGenericRCDATAStartTag(AtomicHTMLToken&);
+ void processGenericRawTextStartTag(AtomicHTMLToken&);
+ void processScriptStartTag(AtomicHTMLToken&);
+
// Default processing for the different insertion modes.
+ // FIXME: These functions need to be renamed to remove "process" from their names.
void processDefaultForInitialMode(AtomicHTMLToken&);
void processDefaultForBeforeHTMLMode(AtomicHTMLToken&);
void processDefaultForBeforeHeadMode(AtomicHTMLToken&);
void processDefaultForInHeadMode(AtomicHTMLToken&);
void processDefaultForInHeadNoscriptMode(AtomicHTMLToken&);
void processDefaultForAfterHeadMode(AtomicHTMLToken&);
+ void processDefaultForInTableTextMode(AtomicHTMLToken&);
- bool processStartTagForInHead(AtomicHTMLToken&);
- bool processBodyEndTagForInBody(AtomicHTMLToken&);
- void processFakePEndTagIfPInScope();
+ void processUsingSecondaryInsertionModeAndAdjustInsertionMode(AtomicHTMLToken&);
+
+ PassRefPtr<NamedNodeMap> attributesForIsindexInput(AtomicHTMLToken&);
HTMLElementStack::ElementRecord* furthestBlockForFormattingElement(Element*);
- void findFosterParentFor(Element*);
void reparentChildren(Element* oldParent, Element* newParent);
void callTheAdoptionAgency(AtomicHTMLToken&);
- template<typename ChildType>
- PassRefPtr<ChildType> attach(Node* parent, PassRefPtr<ChildType> prpChild)
- {
- RefPtr<ChildType> child = prpChild;
- parent->parserAddChild(child);
- // It's slightly unfortunate that we need to hold a reference to child
- // here to call attach(). We should investigate whether we can rely on
- // |parent| to hold a ref at this point. In the common case (at least
- // for elements), however, we'll get to use this ref in the stack of
- // open elements.
- child->attach();
- return child.release();
- }
+ void closeTheCell();
+
+ template <bool shouldClose(const Element*)>
+ void processCloseWhenNestedTag(AtomicHTMLToken&);
- void insertDoctype(AtomicHTMLToken&);
- void insertComment(AtomicHTMLToken&);
- void insertCommentOnDocument(AtomicHTMLToken&);
- void insertCommentOnHTMLHtmlElement(AtomicHTMLToken&);
- void insertHTMLHtmlElement(AtomicHTMLToken&);
- void insertHTMLHeadElement(AtomicHTMLToken&);
- void insertHTMLBodyElement(AtomicHTMLToken&);
- void insertElement(AtomicHTMLToken&);
- void insertSelfClosingElement(AtomicHTMLToken&);
- void insertFormattingElement(AtomicHTMLToken&);
- void insertGenericRCDATAElement(AtomicHTMLToken&);
- void insertGenericRawTextElement(AtomicHTMLToken&);
- void insertScriptElement(AtomicHTMLToken&);
- void insertTextNode(AtomicHTMLToken&);
-
- void insertHTMLStartTagBeforeHTML(AtomicHTMLToken&);
- void insertHTMLStartTagInBody(AtomicHTMLToken&);
-
- PassRefPtr<Element> createElement(AtomicHTMLToken&);
- PassRefPtr<Element> createElementAndAttachToCurrent(AtomicHTMLToken&);
-
- void mergeAttributesFromTokenIntoElement(AtomicHTMLToken&, Element*);
-
- bool indexOfFirstUnopenFormattingElement(unsigned& firstUnopenElementIndex) const;
- void reconstructTheActiveFormattingElements();
-
- void generateImpliedEndTags();
- void generateImpliedEndTagsWithExclusion(const AtomicString& tagName);
-
- Element* currentElement() { return m_openElements.top(); }
-
- RefPtr<Element> m_headElement;
- RefPtr<Element> m_formElement;
- HTMLElementStack m_openElements;
- HTMLFormattingElementList m_activeFormattingElements;
bool m_framesetOk;
// FIXME: Implement error reporting.
@@ -187,17 +174,43 @@ private:
void handleScriptStartTag();
void handleScriptEndTag(Element*, int scriptStartLine);
- void setInsertionMode(InsertionMode value) { m_insertionMode = value; }
InsertionMode insertionMode() const { return m_insertionMode; }
+ void setInsertionMode(InsertionMode mode)
+ {
+ m_insertionMode = mode;
+ m_isFakeInsertionMode = false;
+ }
+
+ bool isFakeInsertionMode() { return m_isFakeInsertionMode; }
+ void setFakeInsertionMode(InsertionMode mode)
+ {
+ m_insertionMode = mode;
+ m_isFakeInsertionMode = true;
+ }
+
+ void setSecondaryInsertionMode(InsertionMode);
+
+ void setInsertionModeAndEnd(InsertionMode, bool foreign); // Helper for resetInsertionModeAppropriately
+ void resetInsertionModeAppropriately();
static bool isScriptingFlagEnabled(Frame* frame);
- Document* m_document; // This is only used by the m_legacyParser for now.
+ Document* m_document;
+ HTMLConstructionSite m_tree;
+
bool m_reportErrors;
bool m_isPaused;
+ bool m_isFakeInsertionMode;
+ // FIXME: InsertionModes should be a separate object to prevent direct
+ // manipulation of these variables. For now, be careful to always use
+ // setInsertionMode and never set m_insertionMode directly.
InsertionMode m_insertionMode;
InsertionMode m_originalInsertionMode;
+ InsertionMode m_secondaryInsertionMode;
+
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#pending-table-character-tokens
+ Vector<UChar> m_pendingTableCharacters;
// HTML5 spec requires that we be able to change the state of the tokenizer
// from within parser actions.
diff --git a/WebCore/html/HTMLVideoElement.cpp b/WebCore/html/HTMLVideoElement.cpp
index cf7d64c..a6fdb5f 100644
--- a/WebCore/html/HTMLVideoElement.cpp
+++ b/WebCore/html/HTMLVideoElement.cpp
@@ -101,7 +101,7 @@ void HTMLVideoElement::parseMappedAttribute(Attribute* attr)
const QualifiedName& attrName = attr->name();
if (attrName == posterAttr) {
- m_posterURL = document()->completeURL(attr->value());
+ m_posterURL = getNonEmptyURLAttribute(posterAttr);
updatePosterImage();
if (m_shouldDisplayPosterImage) {
#if !ENABLE(PLUGIN_PROXY_FOR_VIDEO)
diff --git a/WebCore/html/HTMLVideoElement.idl b/WebCore/html/HTMLVideoElement.idl
index 1f56db9..248d0f4 100644
--- a/WebCore/html/HTMLVideoElement.idl
+++ b/WebCore/html/HTMLVideoElement.idl
@@ -32,7 +32,7 @@ module html {
attribute [Reflect] unsigned long height;
readonly attribute unsigned long videoWidth;
readonly attribute unsigned long videoHeight;
- attribute [ReflectURL] DOMString poster;
+ attribute [Reflect,NonEmpty,URL] DOMString poster;
readonly attribute boolean webkitSupportsFullscreen;
readonly attribute boolean webkitDisplayingFullscreen;
diff --git a/WebCore/html/TimeRanges.idl b/WebCore/html/TimeRanges.idl
index 992b12a..c37c360 100644
--- a/WebCore/html/TimeRanges.idl
+++ b/WebCore/html/TimeRanges.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -25,12 +25,14 @@
module html {
-interface [Conditional=VIDEO, OmitConstructor] TimeRanges {
- readonly attribute unsigned long length;
- float start(in unsigned long index)
- raises (DOMException);
- float end(in unsigned long index)
- raises (DOMException);
-};
+ interface [
+ Conditional=VIDEO
+ ] TimeRanges {
+ readonly attribute unsigned long length;
+ float start(in unsigned long index)
+ raises (DOMException);
+ float end(in unsigned long index)
+ raises (DOMException);
+ };
}
diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
index 2ac2ca3..b3d212a 100644
--- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
+++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
@@ -614,6 +614,10 @@ void CanvasRenderingContext2D::arc(float x, float y, float r, float sa, float ea
ec = INDEX_SIZE_ERR;
return;
}
+
+ if (sa == ea)
+ return;
+
if (!state().m_invertibleCTM)
return;
m_path.addArc(FloatPoint(x, y), r, sa, ea, anticlockwise);
@@ -763,9 +767,7 @@ void CanvasRenderingContext2D::fillRect(float x, float y, float width, float hei
FloatRect rect(x, y, width, height);
willDraw(rect);
- c->save();
c->fillRect(rect);
- c->restore();
}
void CanvasRenderingContext2D::strokeRect(float x, float y, float width, float height)
diff --git a/WebCore/html/canvas/WebGLBuffer.cpp b/WebCore/html/canvas/WebGLBuffer.cpp
index 4c87958..e71a12b 100644
--- a/WebCore/html/canvas/WebGLBuffer.cpp
+++ b/WebCore/html/canvas/WebGLBuffer.cpp
@@ -54,14 +54,24 @@ void WebGLBuffer::_deleteObject(Platform3DObject object)
bool WebGLBuffer::associateBufferData(int size)
{
- switch (m_target) {
- case GraphicsContext3D::ELEMENT_ARRAY_BUFFER:
- case GraphicsContext3D::ARRAY_BUFFER:
+ if (!m_target)
+ return false;
+
+ if (m_target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER) {
+ m_byteLength = size;
+ clearCachedMaxIndices();
+ m_elementArrayBuffer = ArrayBuffer::create(size, 1);
+ if (!m_elementArrayBuffer) {
+ m_byteLength = 0;
+ return false;
+ }
+ return true;
+ } else if (m_target == GraphicsContext3D::ARRAY_BUFFER) {
m_byteLength = size;
return true;
- default:
- return false;
}
+
+ return false;
}
bool WebGLBuffer::associateBufferData(ArrayBufferView* array)
@@ -78,6 +88,10 @@ bool WebGLBuffer::associateBufferData(ArrayBufferView* array)
// modifications without calling bufferData or bufferSubData
// must never be able to change the validation results.
m_elementArrayBuffer = ArrayBuffer::create(array->buffer().get());
+ if (!m_elementArrayBuffer) {
+ m_byteLength = 0;
+ return false;
+ }
return true;
}
@@ -107,6 +121,9 @@ bool WebGLBuffer::associateBufferSubData(long offset, ArrayBufferView* array)
if (uoffset > m_byteLength || array->byteLength() > m_byteLength - uoffset)
return false;
+ if (!m_elementArrayBuffer)
+ return false;
+
memcpy(static_cast<unsigned char*>(m_elementArrayBuffer->data()) + offset, array->baseAddress(), array->byteLength());
return true;
}
diff --git a/WebCore/html/canvas/WebGLRenderingContext.cpp b/WebCore/html/canvas/WebGLRenderingContext.cpp
index c3dea58..a82a4ac4 100644
--- a/WebCore/html/canvas/WebGLRenderingContext.cpp
+++ b/WebCore/html/canvas/WebGLRenderingContext.cpp
@@ -349,6 +349,10 @@ void WebGLRenderingContext::blendFuncSeparate(unsigned long srcRGB, unsigned lon
void WebGLRenderingContext::bufferData(unsigned long target, int size, unsigned long usage, ExceptionCode& ec)
{
UNUSED_PARAM(ec);
+ if (!isGLES2Compliant()) {
+ if (!validateBufferDataUsage(usage))
+ return;
+ }
if (target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER && m_boundElementArrayBuffer) {
if (!m_boundElementArrayBuffer->associateBufferData(size)) {
m_context->synthesizeGLError(GraphicsContext3D::INVALID_VALUE);
@@ -371,6 +375,10 @@ void WebGLRenderingContext::bufferData(unsigned long target, int size, unsigned
void WebGLRenderingContext::bufferData(unsigned long target, ArrayBufferView* data, unsigned long usage, ExceptionCode& ec)
{
UNUSED_PARAM(ec);
+ if (!isGLES2Compliant()) {
+ if (!validateBufferDataUsage(usage))
+ return;
+ }
if (target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER && m_boundElementArrayBuffer) {
if (!m_boundElementArrayBuffer->associateBufferData(data)) {
m_context->synthesizeGLError(GraphicsContext3D::INVALID_VALUE);
@@ -428,6 +436,12 @@ unsigned long WebGLRenderingContext::checkFramebufferStatus(unsigned long target
void WebGLRenderingContext::clear(unsigned long mask)
{
+ if (!isGLES2Compliant()) {
+ if (mask & ~(GraphicsContext3D::COLOR_BUFFER_BIT | GraphicsContext3D::DEPTH_BUFFER_BIT | GraphicsContext3D::STENCIL_BUFFER_BIT)) {
+ m_context->synthesizeGLError(GraphicsContext3D::INVALID_VALUE);
+ return;
+ }
+ }
m_context->clear(mask);
cleanupAfterGraphicsCall(true);
}
@@ -1557,6 +1571,10 @@ WebGLGetInfo WebGLRenderingContext::getUniform(WebGLProgram* program, const WebG
UNUSED_PARAM(ec);
if (!validateWebGLObject(program))
return WebGLGetInfo();
+ if (!uniformLocation) {
+ m_context->synthesizeGLError(GraphicsContext3D::INVALID_VALUE);
+ return WebGLGetInfo();
+ }
if (uniformLocation->program() != program) {
m_context->synthesizeGLError(GraphicsContext3D::INVALID_OPERATION);
return WebGLGetInfo();
@@ -3574,6 +3592,18 @@ bool WebGLRenderingContext::validateUniformMatrixParameters(const WebGLUniformLo
return true;
}
+bool WebGLRenderingContext::validateBufferDataUsage(unsigned long usage)
+{
+ switch (usage) {
+ case GraphicsContext3D::STREAM_DRAW:
+ case GraphicsContext3D::STATIC_DRAW:
+ case GraphicsContext3D::DYNAMIC_DRAW:
+ return true;
+ }
+ m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM);
+ return false;
+}
+
void WebGLRenderingContext::vertexAttribfImpl(unsigned long index, int expectedSize, float v0, float v1, float v2, float v3)
{
if (index >= m_maxVertexAttribs) {
diff --git a/WebCore/html/canvas/WebGLRenderingContext.h b/WebCore/html/canvas/WebGLRenderingContext.h
index be74001..d03d972 100644
--- a/WebCore/html/canvas/WebGLRenderingContext.h
+++ b/WebCore/html/canvas/WebGLRenderingContext.h
@@ -501,6 +501,9 @@ class WebKitCSSMatrix;
bool validateUniformMatrixParameters(const WebGLUniformLocation* location, bool transpose, Float32Array* v, int mod);
bool validateUniformMatrixParameters(const WebGLUniformLocation* location, bool transpose, void* v, int size, int mod);
+ // Helper function to validate usage for bufferData.
+ bool validateBufferDataUsage(unsigned long);
+
// Helper functions for vertexAttribNf{v}.
void vertexAttribfImpl(unsigned long index, int expectedSize, float v0, float v1, float v2, float v3);
void vertexAttribfvImpl(unsigned long index, Float32Array* v, int expectedSize);
diff --git a/WebCore/inspector/CodeGeneratorInspector.pm b/WebCore/inspector/CodeGeneratorInspector.pm
new file mode 100644
index 0000000..cadfaac
--- /dev/null
+++ b/WebCore/inspector/CodeGeneratorInspector.pm
@@ -0,0 +1,298 @@
+# Copyright (c) 2010 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+package CodeGeneratorInspector;
+
+use strict;
+
+use File::stat;
+
+my %typeTransform;
+$typeTransform{"InspectorClient"} = {
+ "forward" => "InspectorClient",
+ "header" => "InspectorClient.h",
+};
+$typeTransform{"PassRefPtr"} = {
+ "forwardHeader" => "wtf/PassRefPtr.h",
+};
+$typeTransform{"Object"} = {
+ "param" => "PassRefPtr<InspectorObject>",
+ "retVal" => "PassRefPtr<InspectorObject>",
+ "forward" => "InspectorObject",
+ "header" => "InspectorValues.h",
+ "push" => "push"
+};
+$typeTransform{"Array"} = {
+ "param" => "PassRefPtr<InspectorArray>",
+ "retVal" => "PassRefPtr<InspectorArray>",
+ "forward" => "InspectorArray",
+ "header" => "InspectorValues.h",
+ "push" => "push"
+};
+$typeTransform{"Value"} = {
+ "param" => "PassRefPtr<InspectorValue>",
+ "retVal" => "PassRefPtr<InspectorValue>",
+ "forward" => "InspectorValue",
+ "header" => "InspectorValues.h",
+ "push" => "push"
+};
+$typeTransform{"String"} = {
+ "param" => "const String&",
+ "retVal" => "String",
+ "forward" => "String",
+ "header" => "PlatformString.h",
+ "push" => "pushString"
+};
+$typeTransform{"long"} = {
+ "param" => "long",
+ "retVal" => "long",
+ "forward" => "",
+ "header" => "",
+ "push" => "pushNumber"
+};
+$typeTransform{"int"} = {
+ "param" => "int",
+ "retVal" => "int",
+ "forward" => "",
+ "header" => "",
+ "push" => "pushNumber"
+};
+$typeTransform{"unsigned long"} = {
+ "param" => "unsigned long",
+ "retVal" => "unsigned long",
+ "forward" => "",
+ "header" => "",
+ "push" => "pushNumber"
+};
+$typeTransform{"boolean"} = {
+ "param" => "bool",
+ "retVal"=> "bool",
+ "forward" => "",
+ "header" => "",
+ "push" => "pushBool"
+};
+$typeTransform{"void"} = {
+ "retVal" => "void",
+ "forward" => "",
+ "header" => ""
+};
+
+# Default License Templates
+
+my $licenseTemplate = << "EOF";
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+EOF
+
+my $codeGenerator;
+my $outputDir;
+my $writeDependencies;
+my $verbose;
+
+my $namespace;
+my $fileName;
+my %discoveredTypes;
+
+my @classDefinition;
+my @functionDefinitions;
+
+sub typeSpec
+{
+ my $param = shift;
+ my $retValue = shift;
+
+ my $type = $typeTransform{$param->type}->{$retValue ? "retVal" : "param"};
+ $discoveredTypes{$param->type} = 1;
+ $type or die "invalid type specification \"" . $param->type ."\"";
+ return $type;
+}
+
+# Default constructor
+sub new
+{
+ my $object = shift;
+ my $reference = { };
+
+ $codeGenerator = shift;
+ $outputDir = shift;
+ shift; # $useLayerOnTop
+ shift; # $preprocessor
+ $writeDependencies = shift;
+ $verbose = shift;
+
+ bless($reference, $object);
+ return $reference;
+}
+
+# Params: 'idlDocument' struct
+sub GenerateModule
+{
+ my $object = shift;
+ my $dataNode = shift;
+
+ $namespace = $dataNode->module;
+}
+
+# Params: 'idlDocument' struct
+sub GenerateInterface
+{
+ my $object = shift;
+ my $interface = shift;
+ my $defines = shift;
+
+ my $className = $interface->name;
+ $fileName = $className;
+
+ $discoveredTypes{"String"} = 1;
+ $discoveredTypes{"InspectorClient"} = 1;
+ $discoveredTypes{"PassRefPtr"} = 1;
+
+ push(@classDefinition, "class $className {");
+ push(@classDefinition, "public:");
+ push(@classDefinition, " $className(InspectorClient* inspectorClient) : m_inspectorClient(inspectorClient) { }");
+ push(@classDefinition, "");
+ push(@classDefinition, generateFunctionsDeclarations($interface, $className));
+ push(@classDefinition, "");
+ push(@classDefinition, "private:");
+ push(@classDefinition, " void sendSimpleMessageToFrontend(const String&);");
+ push(@classDefinition, " InspectorClient* m_inspectorClient;");
+ push(@classDefinition, "};");
+
+ push(@functionDefinitions, "void ${className}::sendSimpleMessageToFrontend(const String& functionName)");
+ push(@functionDefinitions, "{");
+ push(@functionDefinitions, " RefPtr<InspectorArray> arguments = InspectorArray::create();");
+ push(@functionDefinitions, " arguments->pushString(functionName);");
+ push(@functionDefinitions, " m_inspectorClient->sendMessageToFrontend(arguments->toJSONString());");
+ push(@functionDefinitions, "}");
+}
+
+sub generateFunctionsDeclarations
+{
+ my $interface = shift;
+ my $className = shift;
+
+ my @functionDeclarations;
+ foreach my $function (@{$interface->functions}) {
+ my $functionName = $function->signature->name;
+ my $abstract = $function->signature->extendedAttributes->{"abstract"};
+ my $arguments = "";
+ foreach my $parameter (@{$function->parameters}) {
+ $parameter->name or die "empty argument name specified for function ${className}::$functionName and argument type " . $parameter->type;
+ $arguments = $arguments . ", " if ($arguments);
+ $arguments = $arguments . typeSpec($parameter) . " " . $parameter->name;
+ }
+ my $signature = " " . typeSpec($function->signature, 1) . " $functionName($arguments)";
+ push(@functionDeclarations, $abstract ? "$signature = 0;" : "$signature;");
+ push(@functionDefinitions, generateFunctionsImpl($className, $function, $arguments)) if !$abstract;
+ }
+ return @functionDeclarations;
+}
+
+sub generateHeader
+{
+ my @headerContent = split("\r", $licenseTemplate);
+ push(@headerContent, "#ifndef ${fileName}_h");
+ push(@headerContent, "#define ${fileName}_h");
+ push(@headerContent, "");
+
+ my @forwardHeaders;
+ foreach my $type (keys %discoveredTypes) {
+ push(@forwardHeaders, "#include <" . $typeTransform{$type}->{"forwardHeader"} . ">") if !$typeTransform{$type}->{"forwardHeader"} eq "";
+ }
+ push(@headerContent, sort @forwardHeaders);
+ push(@headerContent, "");
+ push(@headerContent, "namespace $namespace {");
+ push(@headerContent, "");
+
+ my @forwardDeclarations;
+ foreach my $type (keys %discoveredTypes) {
+ push(@forwardDeclarations, "class " . $typeTransform{$type}->{"forward"} . ";") if !$typeTransform{$type}->{"forward"} eq "";
+ }
+ push(@headerContent, sort @forwardDeclarations);
+
+ push(@headerContent, "");
+ push(@headerContent, @classDefinition);
+ push(@headerContent, "");
+ push(@headerContent, "} // namespace $namespace");
+ push(@headerContent, "");
+ push(@headerContent, "#endif // !defined(${fileName}_h)");
+ push(@headerContent, "");
+ return @headerContent;
+}
+
+sub generateSource
+{
+ my @sourceContent = split("\r", $licenseTemplate);
+ push(@sourceContent, "\n#include \"config.h\"");
+ push(@sourceContent, "#include \"Remote$fileName.h\"");
+ push(@sourceContent, "");
+ push(@sourceContent, "#if ENABLE(INSPECTOR)");
+ push(@sourceContent, "");
+
+ my %headers;
+ foreach my $type (keys %discoveredTypes) {
+ $headers{"#include \"" . $typeTransform{$type}->{"header"} . "\""} = 1 if !$typeTransform{$type}->{"header"} eq "";
+ }
+ push(@sourceContent, sort keys %headers);
+ push(@sourceContent, "");
+ push(@sourceContent, "namespace $namespace {");
+ push(@sourceContent, "");
+ push(@sourceContent, @functionDefinitions);
+ push(@sourceContent, "");
+ push(@sourceContent, "} // namespace $namespace");
+ push(@sourceContent, "");
+ push(@sourceContent, "#endif // ENABLE(INSPECTOR)");
+ push(@sourceContent, "");
+ return @sourceContent;
+}
+
+sub generateFunctionsImpl
+{
+ my $className = shift;
+ my $function = shift;
+ my $arguments = shift;
+
+ my @func;
+
+ my $functionName = $function->signature->name;
+
+ push(@func, typeSpec($function->signature, 1) . " " . $className . "::" . $functionName . "(" . $arguments . ")");
+ push(@func, "{");
+
+ my $numParameters = @{$function->parameters};
+ if ($numParameters > 0) {
+ push(@func, " RefPtr<InspectorArray> arguments = InspectorArray::create();");
+ push(@func, " arguments->pushString(\"$functionName\");");
+ foreach my $parameter (@{$function->parameters}) {
+ my $pushCall = $typeTransform{$parameter->type}->{"push"};
+ push(@func, " arguments->$pushCall(" . $parameter->name . ");");
+ }
+ push(@func, " m_inspectorClient->sendMessageToFrontend(arguments->toJSONString());");
+ } else {
+ push(@func, " sendSimpleMessageToFrontend(\"$functionName\");");
+ }
+
+ push(@func, "}");
+ push(@func, "");
+ return @func;
+}
+
+sub finish
+{
+ my $object = shift;
+
+ open(my $SOURCE, ">$outputDir/Remote$fileName.cpp") || die "Couldn't open file $outputDir/Remote$fileName.cpp";
+ open(my $HEADER, ">$outputDir/Remote$fileName.h") || die "Couldn't open file $outputDir/Remote$fileName.h";
+
+ print $SOURCE join("\n", generateSource());
+ close($SOURCE);
+ undef($SOURCE);
+
+ print $HEADER join("\n", generateHeader());
+ close($HEADER);
+ undef($HEADER);
+}
+
+1;
diff --git a/WebCore/inspector/InspectorApplicationCacheAgent.cpp b/WebCore/inspector/InspectorApplicationCacheAgent.cpp
new file mode 100644
index 0000000..88238be
--- /dev/null
+++ b/WebCore/inspector/InspectorApplicationCacheAgent.cpp
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "InspectorApplicationCacheAgent.h"
+
+#if ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+
+#include "ApplicationCache.h"
+#include "ApplicationCacheResource.h"
+#include "DocumentLoader.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "InspectorController.h"
+#include "InspectorFrontend.h"
+#include "Page.h"
+#include "ResourceResponse.h"
+#include "ScriptArray.h"
+#include "ScriptObject.h"
+
+namespace WebCore {
+
+InspectorApplicationCacheAgent::InspectorApplicationCacheAgent(InspectorController* inspectorController, InspectorFrontend* frontend)
+ : m_inspectorController(inspectorController)
+ , m_frontend(frontend)
+{
+}
+
+void InspectorApplicationCacheAgent::didReceiveManifestResponse(unsigned long identifier, const ResourceResponse& response)
+{
+ m_inspectorController->didReceiveResponse(identifier, response);
+}
+
+void InspectorApplicationCacheAgent::updateApplicationCacheStatus(ApplicationCacheHost::Status status)
+{
+ m_frontend->updateApplicationCacheStatus(status);
+}
+
+void InspectorApplicationCacheAgent::updateNetworkState(bool isNowOnline)
+{
+ m_frontend->updateNetworkState(isNowOnline);
+}
+
+void InspectorApplicationCacheAgent::fillResourceList(ApplicationCache* cache, ResourceInfoList* resources)
+{
+#if !PLATFORM(CHROMIUM)
+ ASSERT(cache && cache->isComplete());
+#endif
+ ApplicationCache::ResourceMap::const_iterator end = cache->end();
+ for (ApplicationCache::ResourceMap::const_iterator it = cache->begin(); it != end; ++it) {
+ RefPtr<ApplicationCacheResource> resource = it->second;
+ unsigned type = resource->type();
+ bool isMaster = type & ApplicationCacheResource::Master;
+ bool isManifest = type & ApplicationCacheResource::Manifest;
+ bool isExplicit = type & ApplicationCacheResource::Explicit;
+ bool isForeign = type & ApplicationCacheResource::Foreign;
+ bool isFallback = type & ApplicationCacheResource::Fallback;
+#if PLATFORM(CHROMIUM)
+ int64_t estimatedSizeInStorage = 0;
+#else
+ int64_t estimatedSizeInStorage = resource->estimatedSizeInStorage();
+#endif
+ resources->append(InspectorApplicationCacheAgent::ResourceInfo(resource->url(), isMaster, isManifest, isFallback, isForeign, isExplicit, estimatedSizeInStorage));
+ }
+}
+
+void InspectorApplicationCacheAgent::getApplicationCaches(long callId)
+{
+ DocumentLoader* documentLoader = m_inspectorController->inspectedPage()->mainFrame()->loader()->documentLoader();
+ if (!documentLoader) {
+ m_frontend->didGetApplicationCaches(callId, ScriptValue::undefined());
+ return;
+ }
+
+ ApplicationCacheHost* host = documentLoader->applicationCacheHost();
+ ApplicationCache* cache = host->applicationCacheForInspector();
+ if (!cache
+#if !PLATFORM(CHROMIUM)
+ || !cache->isComplete()
+#endif
+ ) {
+ m_frontend->didGetApplicationCaches(callId, ScriptValue::undefined());
+ return;
+ }
+
+ // FIXME: Add "Creation Time" and "Update Time" to Application Caches.
+ ApplicationCacheInfo info(cache->manifestResource()->url(), String(), String(), cache->estimatedSizeInStorage());
+ ResourceInfoList resources;
+ fillResourceList(cache, &resources);
+
+ m_frontend->didGetApplicationCaches(callId, buildObjectForApplicationCache(resources, info));
+}
+
+ScriptObject InspectorApplicationCacheAgent::buildObjectForApplicationCache(const ResourceInfoList& applicationCacheResources, const ApplicationCacheInfo& applicationCacheInfo)
+{
+ ScriptObject value = m_frontend->newScriptObject();
+ value.set("size", applicationCacheInfo.m_size);
+ value.set("manifest", applicationCacheInfo.m_manifest.string());
+ value.set("lastPathComponent", applicationCacheInfo.m_manifest.lastPathComponent());
+ value.set("creationTime", applicationCacheInfo.m_creationTime);
+ value.set("updateTime", applicationCacheInfo.m_updateTime);
+ value.set("resources", buildArrayForApplicationCacheResources(applicationCacheResources));
+ return value;
+}
+
+ScriptArray InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources(const ResourceInfoList& applicationCacheResources)
+{
+ ScriptArray resources = m_frontend->newScriptArray();
+
+ ResourceInfoList::const_iterator end = applicationCacheResources.end();
+ ResourceInfoList::const_iterator it = applicationCacheResources.begin();
+ for (int i = 0; it != end; ++it, i++)
+ resources.set(i, buildObjectForApplicationCacheResource(*it));
+
+ return resources;
+}
+
+ScriptObject InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource(const ResourceInfo& resourceInfo)
+{
+ ScriptObject value = m_frontend->newScriptObject();
+ value.set("name", resourceInfo.m_resource.string());
+ value.set("size", resourceInfo.m_size);
+
+ String types;
+ if (resourceInfo.m_isMaster)
+ types.append("Master ");
+
+ if (resourceInfo.m_isManifest)
+ types.append("Manifest ");
+
+ if (resourceInfo.m_isFallback)
+ types.append("Fallback ");
+
+ if (resourceInfo.m_isForeign)
+ types.append("Foreign ");
+
+ if (resourceInfo.m_isExplicit)
+ types.append("Explicit ");
+
+ value.set("type", types);
+ return value;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
diff --git a/WebCore/inspector/InspectorApplicationCacheAgent.h b/WebCore/inspector/InspectorApplicationCacheAgent.h
new file mode 100644
index 0000000..79763f4
--- /dev/null
+++ b/WebCore/inspector/InspectorApplicationCacheAgent.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorApplicationCacheAgent_h
+#define InspectorApplicationCacheAgent_h
+
+#if ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+
+#include "ApplicationCacheHost.h"
+#include "KURL.h"
+#include "PlatformString.h"
+#include <wtf/Noncopyable.h>
+
+namespace WebCore {
+
+class ApplicationCache;
+class InspectorController;
+class InspectorFrontend;
+class ResourceResponse;
+class ScriptArray;
+class ScriptObject;
+
+class InspectorApplicationCacheAgent : public Noncopyable {
+public:
+ struct ApplicationCacheInfo {
+ ApplicationCacheInfo(const KURL& manifest, const String& creationTime, const String& updateTime, long long size)
+ : m_manifest(manifest)
+ , m_creationTime(creationTime)
+ , m_updateTime(updateTime)
+ , m_size(size)
+ {
+ }
+
+ KURL m_manifest;
+ String m_creationTime;
+ String m_updateTime;
+ long long m_size;
+ };
+
+ struct ResourceInfo {
+ ResourceInfo(const KURL& resource, bool isMaster, bool isManifest, bool isFallback, bool isForeign, bool isExplicit, long long size)
+ : m_resource(resource)
+ , m_isMaster(isMaster)
+ , m_isManifest(isManifest)
+ , m_isFallback(isFallback)
+ , m_isForeign(isForeign)
+ , m_isExplicit(isExplicit)
+ , m_size(size)
+ {
+ }
+
+ KURL m_resource;
+ bool m_isMaster;
+ bool m_isManifest;
+ bool m_isFallback;
+ bool m_isForeign;
+ bool m_isExplicit;
+ long long m_size;
+ };
+
+ typedef Vector<ResourceInfo> ResourceInfoList;
+
+ InspectorApplicationCacheAgent(InspectorController* inspectorController, InspectorFrontend* frontend);
+ ~InspectorApplicationCacheAgent() { }
+
+ // Backend to Frontend
+ void didReceiveManifestResponse(unsigned long identifier, const ResourceResponse&);
+ void updateApplicationCacheStatus(ApplicationCacheHost::Status);
+ void updateNetworkState(bool isNowOnline);
+
+ // From Frontend
+ void getApplicationCaches(long callId);
+
+private:
+ ScriptObject buildObjectForApplicationCache(const ResourceInfoList&, const ApplicationCacheInfo&);
+ ScriptArray buildArrayForApplicationCacheResources(const ResourceInfoList&);
+ ScriptObject buildObjectForApplicationCacheResource(const ResourceInfo&);
+
+ void fillResourceList(ApplicationCache*, ResourceInfoList*);
+
+ InspectorController* m_inspectorController;
+ InspectorFrontend* m_frontend;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+#endif // InspectorApplicationCacheAgent_h
diff --git a/WebCore/inspector/InspectorBackend.cpp b/WebCore/inspector/InspectorBackend.cpp
index e8866c2..57ee19f 100644
--- a/WebCore/inspector/InspectorBackend.cpp
+++ b/WebCore/inspector/InspectorBackend.cpp
@@ -61,6 +61,10 @@
#include "ScriptDebugServer.h"
#endif
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+#include "InspectorApplicationCacheAgent.h"
+#endif
+
#include "markup.h"
#include <wtf/RefPtr.h>
@@ -514,6 +518,14 @@ void InspectorBackend::hideDOMNodeHighlight()
m_inspectorController->hideHighlight();
}
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+void InspectorBackend::getApplicationCaches(long callId)
+{
+ if (InspectorApplicationCacheAgent* agent = inspectorApplicationCacheAgent())
+ agent->getApplicationCaches(callId);
+}
+#endif
+
void InspectorBackend::getCookies(long callId)
{
if (!m_inspectorController)
@@ -585,6 +597,15 @@ InspectorDOMAgent* InspectorBackend::inspectorDOMAgent()
return m_inspectorController->domAgent();
}
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+InspectorApplicationCacheAgent* InspectorBackend::inspectorApplicationCacheAgent()
+{
+ if (!m_inspectorController)
+ return 0;
+ return m_inspectorController->applicationCacheAgent();
+}
+#endif
+
InspectorFrontend* InspectorBackend::inspectorFrontend()
{
if (!m_inspectorController)
diff --git a/WebCore/inspector/InspectorBackend.h b/WebCore/inspector/InspectorBackend.h
index 035abf6..47cfdc7 100644
--- a/WebCore/inspector/InspectorBackend.h
+++ b/WebCore/inspector/InspectorBackend.h
@@ -39,6 +39,7 @@ namespace WebCore {
class CachedResource;
class Database;
+class InspectorApplicationCacheAgent;
class InspectorDOMAgent;
class InspectorFrontend;
class Node;
@@ -153,6 +154,10 @@ public:
void getCookies(long callId);
void deleteCookie(const String& cookieName, const String& domain);
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ void getApplicationCaches(long callId);
+#endif
+
// Generic code called from custom implementations.
void releaseWrapperObjectGroup(long injectedScriptId, const String& objectGroup);
void didEvaluateForTestInFrontend(long callId, const String& jsonResult);
@@ -170,6 +175,9 @@ public:
private:
InspectorBackend(InspectorController* inspectorController);
InspectorDOMAgent* inspectorDOMAgent();
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ InspectorApplicationCacheAgent* inspectorApplicationCacheAgent();
+#endif
InspectorFrontend* inspectorFrontend();
Node* nodeForId(long nodeId);
diff --git a/WebCore/inspector/InspectorBackend.idl b/WebCore/inspector/InspectorBackend.idl
index b4a68cf..1fc8a16 100644
--- a/WebCore/inspector/InspectorBackend.idl
+++ b/WebCore/inspector/InspectorBackend.idl
@@ -128,6 +128,10 @@ module core {
void getCookies(in long callId);
void deleteCookie(in DOMString cookieName, in DOMString domain);
+#if defined(ENABLE_OFFLINE_WEB_APPLICATIONS)
+ void getApplicationCaches(in long callId);
+#endif
+
void releaseWrapperObjectGroup(in long injectedScriptId, in DOMString objectGroup);
void didEvaluateForTestInFrontend(in long callId, in DOMString jsonResult);
diff --git a/WebCore/inspector/InspectorCSSStore.cpp b/WebCore/inspector/InspectorCSSStore.cpp
index 7bc947a..413fb8b 100644
--- a/WebCore/inspector/InspectorCSSStore.cpp
+++ b/WebCore/inspector/InspectorCSSStore.cpp
@@ -39,10 +39,9 @@
#include "CSSStyleSheet.h"
#include "HTMLHeadElement.h"
#include "InspectorController.h"
-#include "InspectorFrontend.h"
#include "InspectorResource.h"
#include "PlatformString.h"
-#include "ScriptObject.h"
+#include "RemoteInspectorFrontend2.h"
#include "StyleSheetList.h"
namespace WebCore {
@@ -96,13 +95,13 @@ CSSStyleSheet* InspectorCSSStore::inspectorStyleSheet(Document* ownerDocument, b
if (!ec)
ownerDocument->head()->appendChild(styleElement, ec);
if (ec) {
- m_inspectorController->inspectorFrontend()->didAddRule(callId, ScriptValue::undefined(), false);
+ m_inspectorController->inspectorFrontend2()->didAddRule(callId, InspectorValue::null(), false);
return 0;
}
StyleSheetList* styleSheets = ownerDocument->styleSheets();
StyleSheet* styleSheet = styleSheets->item(styleSheets->length() - 1);
if (!styleSheet->isCSSStyleSheet()) {
- m_inspectorController->inspectorFrontend()->didAddRule(callId, ScriptValue::undefined(), false);
+ m_inspectorController->inspectorFrontend2()->didAddRule(callId, InspectorValue::null(), false);
return 0;
}
CSSStyleSheet* inspectorStyleSheet = static_cast<CSSStyleSheet*>(styleSheet);
@@ -125,7 +124,7 @@ HashMap<long, SourceRange> InspectorCSSStore::getRuleRangesForStyleSheet(CSSStyl
RefPtr<CSSStyleSheet> newStyleSheet = CSSStyleSheet::create(styleSheet->ownerNode());
CSSParser p;
CSSParser::StyleRuleRanges ruleRangeMap;
- p.parseSheet(newStyleSheet.get(), resource->sourceString(), &ruleRangeMap);
+ p.parseSheet(newStyleSheet.get(), resource->sourceString(), 0, &ruleRangeMap);
for (unsigned i = 0, length = newStyleSheet->length(); i < length; ++i) {
CSSStyleRule* rule = asCSSStyleRule(newStyleSheet->item(i));
if (!rule)
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 2256041..ed25696 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -68,6 +68,7 @@
#include "Page.h"
#include "ProgressTracker.h"
#include "Range.h"
+#include "RemoteInspectorFrontend2.h"
#include "RenderInline.h"
#include "ResourceRequest.h"
#include "ResourceResponse.h"
@@ -95,6 +96,10 @@
#include "Database.h"
#endif
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+#include "InspectorApplicationCacheAgent.h"
+#endif
+
#if ENABLE(DOM_STORAGE)
#include "Storage.h"
#include "StorageArea.h"
@@ -216,7 +221,7 @@ InspectorController::~InspectorController()
ASSERT(s_inspectorControllerCount);
--s_inspectorControllerCount;
- releaseDOMAgent();
+ releaseFrontendLifetimeAgents();
m_inspectorBackend->disconnectController();
m_injectedScriptHost->disconnectController();
@@ -479,11 +484,12 @@ void InspectorController::setMonitoringXHR(bool enabled)
void InspectorController::connectFrontend(const ScriptObject& webInspector)
{
m_openingFrontend = false;
+ releaseFrontendLifetimeAgents();
m_frontend = new InspectorFrontend(webInspector, m_client);
- releaseDOMAgent();
- m_domAgent = InspectorDOMAgent::create(m_cssStore.get(), m_frontend.get());
+ m_frontend2 = new InspectorFrontend2(m_client);
+ m_domAgent = InspectorDOMAgent::create(m_cssStore.get(), m_frontend2.get());
if (m_timelineAgent)
- m_timelineAgent->resetFrontendProxyObject(m_frontend.get());
+ m_timelineAgent->resetFrontendProxyObject(m_frontend2.get());
// Initialize Web Inspector title.
m_frontend->inspectedURLChanged(m_inspectedPage->mainFrame()->loader()->url().string());
@@ -513,6 +519,10 @@ void InspectorController::connectFrontend(const ScriptObject& webInspector)
if (m_nodeToFocus)
focusNode();
showPanel(m_showAfterVisible);
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ m_applicationCacheAgent = new InspectorApplicationCacheAgent(this, m_frontend.get());
+#endif
}
void InspectorController::show()
@@ -582,17 +592,21 @@ void InspectorController::disconnectFrontend()
stopUserInitiatedProfiling();
#endif
- releaseDOMAgent();
+ releaseFrontendLifetimeAgents();
m_timelineAgent.clear();
}
-void InspectorController::releaseDOMAgent()
+void InspectorController::releaseFrontendLifetimeAgents()
{
// m_domAgent is RefPtr. Remove DOM listeners first to ensure that there are
// no references to the DOM agent from the DOM tree.
if (m_domAgent)
m_domAgent->reset();
m_domAgent.clear();
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ m_applicationCacheAgent.clear();
+#endif
}
void InspectorController::populateScriptObjects()
@@ -933,7 +947,7 @@ bool InspectorController::isMainResourceLoader(DocumentLoader* loader, const KUR
return loader->frame() == m_inspectedPage->mainFrame() && requestUrl == loader->requestURL();
}
-void InspectorController::willSendRequest(unsigned long identifier, const ResourceRequest& request, const ResourceResponse& redirectResponse)
+void InspectorController::willSendRequest(unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse)
{
if (!enabled())
return;
@@ -946,11 +960,12 @@ void InspectorController::willSendRequest(unsigned long identifier, const Resour
if (!resource)
return;
+ request.setReportLoadTiming(true);
+
if (!redirectResponse.isNull()) {
// Redirect may have empty URL and we'd like to not crash with invalid HashMap entry.
// See http/tests/misc/will-send-request-returns-null-on-redirect.html
if (!request.url().isEmpty()) {
- resource->markResponseReceivedTime();
resource->endTiming();
resource->updateResponse(redirectResponse);
@@ -981,7 +996,6 @@ void InspectorController::didReceiveResponse(unsigned long identifier, const Res
if (RefPtr<InspectorResource> resource = getTrackedResource(identifier)) {
resource->updateResponse(response);
- resource->markResponseReceivedTime();
if (resource != m_mainResource && m_frontend)
resource->updateScriptObject(m_frontend.get());
@@ -1149,7 +1163,7 @@ void InspectorController::startTimelineProfiler()
if (m_timelineAgent)
return;
- m_timelineAgent = new InspectorTimelineAgent(m_frontend.get());
+ m_timelineAgent = new InspectorTimelineAgent(m_frontend2.get());
if (m_frontend)
m_frontend->timelineProfilerWasStarted();
m_client->timelineProfilerWasStarted();
@@ -1342,6 +1356,16 @@ ScriptObject InspectorController::buildObjectForCookie(const Cookie& cookie)
return value;
}
+void InspectorController::deleteCookie(const String& cookieName, const String& domain)
+{
+ ResourcesMap::iterator resourcesEnd = m_resources.end();
+ for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) {
+ Document* document = it->second->frame()->document();
+ if (document->url().host() == domain)
+ WebCore::deleteCookie(document, it->second->requestURL(), cookieName);
+ }
+}
+
#if ENABLE(DOM_STORAGE)
void InspectorController::didUseDOMStorage(StorageArea* storageArea, bool isLocalStorage, Frame* frame)
{
@@ -2104,16 +2128,6 @@ InspectorController::SpecialPanels InspectorController::specialPanelForJSName(co
return ElementsPanel;
}
-void InspectorController::deleteCookie(const String& cookieName, const String& domain)
-{
- ResourcesMap::iterator resourcesEnd = m_resources.end();
- for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) {
- Document* document = it->second->frame()->document();
- if (document->url().host() == domain)
- WebCore::deleteCookie(document, it->second->requestURL(), cookieName);
- }
-}
-
InjectedScript InspectorController::injectedScriptForNodeId(long id)
{
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 4c94d6d..1f416a0 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -41,7 +41,6 @@
#include "ScriptValue.h"
#include "StringHash.h"
#include "Timer.h"
-
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/ListHashSet.h>
@@ -55,6 +54,7 @@
namespace WebCore {
class CachedResource;
+class ConsoleMessage;
class Database;
class Document;
class DocumentLoader;
@@ -66,10 +66,15 @@ class InjectedScriptHost;
class InspectorBackend;
class InspectorClient;
class InspectorCSSStore;
+class InspectorDOMStorageResource;
+class InspectorDatabaseResource;
class InspectorFrontend;
+class InspectorFrontend2;
class InspectorFrontendClient;
+class InspectorResource;
class InspectorTimelineAgent;
class InspectorValue;
+class InspectorWorkerResource;
class KURL;
class Node;
class Page;
@@ -82,11 +87,9 @@ class SharedBuffer;
class Storage;
class StorageArea;
-class ConsoleMessage;
-class InspectorDatabaseResource;
-class InspectorDOMStorageResource;
-class InspectorResource;
-class InspectorWorkerResource;
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+class InspectorApplicationCacheAgent;
+#endif
class InspectorController
#if ENABLE(JAVASCRIPT_DEBUGGER)
@@ -161,11 +164,10 @@ public:
void didCommitLoad(DocumentLoader*);
void frameDetachedFromParent(Frame*);
-
void didLoadResourceFromMemoryCache(DocumentLoader*, const CachedResource*);
void identifierForInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&);
- void willSendRequest(unsigned long identifier, const ResourceRequest&, const ResourceResponse& redirectResponse);
+ void willSendRequest(unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse);
void didReceiveResponse(unsigned long identifier, const ResourceResponse&);
void didReceiveContentLength(unsigned long identifier, int lengthReceived);
void didFinishLoading(unsigned long identifier);
@@ -183,6 +185,13 @@ public:
void stopTimelineProfiler();
InspectorTimelineAgent* timelineAgent() { return m_timelineAgent.get(); }
+ void getCookies(long callId);
+ void deleteCookie(const String& cookieName, const String& domain);
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ InspectorApplicationCacheAgent* applicationCacheAgent() { return m_applicationCacheAgent.get(); }
+#endif
+
void mainResourceFiredLoadEvent(DocumentLoader*, const KURL&);
void mainResourceFiredDOMContentEvent(DocumentLoader*, const KURL&);
@@ -196,7 +205,6 @@ public:
void didCreateWorker(intptr_t, const String& url, bool isSharedWorker);
void didDestroyWorker(intptr_t);
#endif
- void getCookies(long callId);
#if ENABLE(DATABASE)
void didOpenDatabase(Database*, const String& domain, const String& name, const String& version);
@@ -212,6 +220,7 @@ public:
const ResourcesMap& resources() const { return m_resources; }
InspectorResource* resourceForURL(const String& url);
InspectorFrontend* inspectorFrontend() { return m_frontend.get(); }
+ InspectorFrontend2* inspectorFrontend2() { return m_frontend2.get(); }
void drawNodeHighlight(GraphicsContext&) const;
@@ -243,9 +252,7 @@ public:
bool profilerEnabled() const { return enabled() && m_profilerEnabled; }
void takeHeapSnapshot();
-#endif
-#if ENABLE(JAVASCRIPT_DEBUGGER)
void enableDebugger();
void disableDebugger(bool always = false);
bool debuggerEnabled() const { return m_debuggerEnabled; }
@@ -284,9 +291,7 @@ private:
void setMonitoringXHR(bool enabled);
void storeLastActivePanel(const String& panelName);
InspectorDOMAgent* domAgent() { return m_domAgent.get(); }
- void releaseDOMAgent();
-
- void deleteCookie(const String& cookieName, const String& domain);
+ void releaseFrontendLifetimeAgents();
#if ENABLE(JAVASCRIPT_DEBUGGER)
void setBreakpoint(long callId, const String& sourceID, unsigned lineNumber, bool enabled, const String& condition);
@@ -340,9 +345,15 @@ private:
OwnPtr<InspectorFrontendClient> m_inspectorFrontendClient;
bool m_openingFrontend;
OwnPtr<InspectorFrontend> m_frontend;
+ OwnPtr<InspectorFrontend2> m_frontend2;
RefPtr<InspectorDOMAgent> m_domAgent;
OwnPtr<InspectorCSSStore> m_cssStore;
OwnPtr<InspectorTimelineAgent> m_timelineAgent;
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ OwnPtr<InspectorApplicationCacheAgent> m_applicationCacheAgent;
+#endif
+
RefPtr<Node> m_nodeToFocus;
RefPtr<InspectorResource> m_mainResource;
ResourcesMap m_resources;
diff --git a/WebCore/inspector/InspectorDOMAgent.cpp b/WebCore/inspector/InspectorDOMAgent.cpp
index a2f2e15..46bc938 100644
--- a/WebCore/inspector/InspectorDOMAgent.cpp
+++ b/WebCore/inspector/InspectorDOMAgent.cpp
@@ -55,15 +55,14 @@
#include "FrameTree.h"
#include "HTMLElement.h"
#include "HTMLFrameOwnerElement.h"
-#include "InspectorFrontend.h"
#include "MutationEvent.h"
#include "Node.h"
#include "NodeList.h"
#include "PlatformString.h"
+#include "RemoteInspectorFrontend2.h"
#include "RenderStyle.h"
#include "RenderStyleConstants.h"
#include "ScriptEventListener.h"
-#include "ScriptObject.h"
#include "StyleSheetList.h"
#include "Text.h"
@@ -196,7 +195,7 @@ public:
}
-InspectorDOMAgent::InspectorDOMAgent(InspectorCSSStore* cssStore, InspectorFrontend* frontend)
+InspectorDOMAgent::InspectorDOMAgent(InspectorCSSStore* cssStore, InspectorFrontend2* frontend)
: EventListener(InspectorDOMAgentType)
, m_cssStore(cssStore)
, m_frontend(frontend)
@@ -234,7 +233,7 @@ void InspectorDOMAgent::setDocument(Document* doc)
if (doc->documentElement())
pushDocumentToFrontend();
} else
- m_frontend->setDocument(ScriptObject());
+ m_frontend->setDocument(InspectorValue::null());
}
void InspectorDOMAgent::releaseDanglingNodes()
@@ -284,10 +283,10 @@ void InspectorDOMAgent::handleEvent(ScriptExecutionContext*, Event* event)
// Re-add frame owner element together with its new children.
long parentId = m_documentNodeToIdMap.get(innerParentNode(node));
m_frontend->childNodeRemoved(parentId, frameOwnerId);
- ScriptObject value = buildObjectForNode(node, 0, &m_documentNodeToIdMap);
+ RefPtr<InspectorObject> value = buildObjectForNode(node, 0, &m_documentNodeToIdMap);
Node* previousSibling = innerPreviousSibling(node);
long prevId = previousSibling ? m_documentNodeToIdMap.get(previousSibling) : 0;
- m_frontend->childNodeInserted(parentId, prevId, value);
+ m_frontend->childNodeInserted(parentId, prevId, value.release());
// Invalidate children requested flag for the element.
m_childrenRequested.remove(m_childrenRequested.find(frameOwnerId));
}
@@ -350,9 +349,9 @@ void InspectorDOMAgent::pushChildNodesToFrontend(long nodeId)
return;
NodeToIdMap* nodeMap = m_idToNodesMap.get(nodeId);
- ScriptArray children = buildArrayForContainerChildren(node, 1, nodeMap);
+ RefPtr<InspectorArray> children = buildArrayForContainerChildren(node, 1, nodeMap);
m_childrenRequested.add(nodeId);
- m_frontend->setChildNodes(nodeId, children);
+ m_frontend->setChildNodes(nodeId, children.release());
}
long InspectorDOMAgent::pushNodeByPathToFrontend(const String& path)
@@ -587,13 +586,12 @@ void InspectorDOMAgent::setTextNodeValue(long callId, long nodeId, const String&
void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
{
Node* node = nodeForId(nodeId);
- ScriptArray listenersArray = m_frontend->newScriptArray();
- unsigned counter = 0;
+ RefPtr<InspectorArray> listenersArray = InspectorArray::create();
EventTargetData* d;
// Quick break if a null node or no listeners at all
if (!node || !(d = node->eventTargetData())) {
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray);
+ m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
return;
}
@@ -607,7 +605,7 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
// Quick break if no useful listeners
size_t eventTypesLength = eventTypes.size();
if (eventTypesLength == 0) {
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray);
+ m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
return;
}
@@ -640,7 +638,7 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
if (listener.useCapture)
- listenersArray.set(counter++, buildObjectForEventListener(listener, info.eventType, info.node));
+ listenersArray->push(buildObjectForEventListener(listener, info.eventType, info.node));
}
}
@@ -651,11 +649,11 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
if (!listener.useCapture)
- listenersArray.set(counter++, buildObjectForEventListener(listener, info.eventType, info.node));
+ listenersArray->push(buildObjectForEventListener(listener, info.eventType, info.node));
}
}
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray);
+ m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
}
void InspectorDOMAgent::addInspectedNode(long nodeId)
@@ -769,9 +767,9 @@ String InspectorDOMAgent::documentURLString(Document* document) const
return document->url().string();
}
-ScriptObject InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap)
{
- ScriptObject value = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> value = InspectorObject::create();
long id = bind(node, nodesMap);
String nodeName;
@@ -796,95 +794,92 @@ ScriptObject InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeTo
break;
}
- value.set("id", id);
- value.set("nodeType", node->nodeType());
- value.set("nodeName", nodeName);
- value.set("localName", localName);
- value.set("nodeValue", nodeValue);
+ value->setNumber("id", id);
+ value->setNumber("nodeType", node->nodeType());
+ value->setString("nodeName", nodeName);
+ value->setString("localName", localName);
+ value->setString("nodeValue", nodeValue);
if (node->nodeType() == Node::ELEMENT_NODE || node->nodeType() == Node::DOCUMENT_NODE || node->nodeType() == Node::DOCUMENT_FRAGMENT_NODE) {
int nodeCount = innerChildNodeCount(node);
- value.set("childNodeCount", nodeCount);
- ScriptArray children = buildArrayForContainerChildren(node, depth, nodesMap);
- if (children.length() > 0)
- value.set("children", children);
+ value->setNumber("childNodeCount", nodeCount);
+ RefPtr<InspectorArray> children = buildArrayForContainerChildren(node, depth, nodesMap);
+ if (children->length() > 0)
+ value->set("children", children.release());
if (node->nodeType() == Node::ELEMENT_NODE) {
Element* element = static_cast<Element*>(node);
- value.set("attributes", buildArrayForElementAttributes(element));
+ value->set("attributes", buildArrayForElementAttributes(element));
if (node->isFrameOwnerElement()) {
HTMLFrameOwnerElement* frameOwner = static_cast<HTMLFrameOwnerElement*>(node);
- value.set("documentURL", documentURLString(frameOwner->contentDocument()));
+ value->setString("documentURL", documentURLString(frameOwner->contentDocument()));
}
} else if (node->nodeType() == Node::DOCUMENT_NODE) {
Document* document = static_cast<Document*>(node);
- value.set("documentURL", documentURLString(document));
+ value->setString("documentURL", documentURLString(document));
}
} else if (node->nodeType() == Node::DOCUMENT_TYPE_NODE) {
DocumentType* docType = static_cast<DocumentType*>(node);
- value.set("publicId", docType->publicId());
- value.set("systemId", docType->systemId());
- value.set("internalSubset", docType->internalSubset());
+ value->setString("publicId", docType->publicId());
+ value->setString("systemId", docType->systemId());
+ value->setString("internalSubset", docType->internalSubset());
}
- return value;
+ return value.release();
}
-ScriptArray InspectorDOMAgent::buildArrayForElementAttributes(Element* element)
+PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForElementAttributes(Element* element)
{
- ScriptArray attributesValue = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> attributesValue = InspectorArray::create();
// Go through all attributes and serialize them.
const NamedNodeMap* attrMap = element->attributes(true);
if (!attrMap)
- return attributesValue;
+ return attributesValue.release();
unsigned numAttrs = attrMap->length();
- int index = 0;
for (unsigned i = 0; i < numAttrs; ++i) {
// Add attribute pair
const Attribute *attribute = attrMap->attributeItem(i);
- attributesValue.set(index++, attribute->name().toString());
- attributesValue.set(index++, attribute->value());
+ attributesValue->pushString(attribute->name().toString());
+ attributesValue->pushString(attribute->value());
}
- return attributesValue;
+ return attributesValue.release();
}
-ScriptArray InspectorDOMAgent::buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap)
+PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap)
{
- ScriptArray children = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> children = InspectorArray::create();
if (depth == 0) {
- int index = 0;
// Special case the_only text child.
if (innerChildNodeCount(container) == 1) {
Node *child = innerFirstChild(container);
if (child->nodeType() == Node::TEXT_NODE)
- children.set(index++, buildObjectForNode(child, 0, nodesMap));
+ children->push(buildObjectForNode(child, 0, nodesMap));
}
- return children;
+ return children.release();
} else if (depth > 0) {
depth--;
}
- int index = 0;
for (Node *child = innerFirstChild(container); child; child = innerNextSibling(child))
- children.set(index++, buildObjectForNode(child, depth, nodesMap));
- return children;
+ children->push(buildObjectForNode(child, depth, nodesMap));
+ return children.release();
}
-ScriptObject InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node)
{
RefPtr<EventListener> eventListener = registeredEventListener.listener;
- ScriptObject value = m_frontend->newScriptObject();
- value.set("type", eventType);
- value.set("useCapture", registeredEventListener.useCapture);
- value.set("isAttribute", eventListener->isAttribute());
- value.set("nodeId", pushNodePathToFrontend(node));
- value.set("listenerBody", eventListenerHandlerBody(node->document(), m_frontend->scriptState(), eventListener.get()));
+ RefPtr<InspectorObject> value = InspectorObject::create();
+ value->setString("type", eventType);
+ value->setBool("useCapture", registeredEventListener.useCapture);
+ value->setBool("isAttribute", eventListener->isAttribute());
+ value->setNumber("nodeId", pushNodePathToFrontend(node));
+ value->setString("listenerBody", eventListenerHandlerBody(node->document(), eventListener.get()));
String sourceName;
int lineNumber;
- if (eventListenerHandlerLocation(node->document(), m_frontend->scriptState(), eventListener.get(), sourceName, lineNumber)) {
- value.set("sourceName", sourceName);
- value.set("lineNumber", lineNumber);
+ if (eventListenerHandlerLocation(node->document(), eventListener.get(), sourceName, lineNumber)) {
+ value->setString("sourceName", sourceName);
+ value->setNumber("lineNumber", lineNumber);
}
- return value;
+ return value.release();
}
Node* InspectorDOMAgent::innerFirstChild(Node* node)
@@ -980,8 +975,8 @@ void InspectorDOMAgent::didInsertDOMNode(Node* node)
// Children have been requested -> return value of a new child.
Node* prevSibling = innerPreviousSibling(node);
long prevId = prevSibling ? m_documentNodeToIdMap.get(prevSibling) : 0;
- ScriptObject value = buildObjectForNode(node, 0, &m_documentNodeToIdMap);
- m_frontend->childNodeInserted(parentId, prevId, value);
+ RefPtr<InspectorObject> value = buildObjectForNode(node, 0, &m_documentNodeToIdMap);
+ m_frontend->childNodeInserted(parentId, prevId, value.release());
}
}
@@ -1019,62 +1014,61 @@ void InspectorDOMAgent::getStyles(long callId, long nodeId, bool authorOnly)
{
Node* node = nodeForId(nodeId);
if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetStyles(callId, ScriptValue::undefined());
+ m_frontend->didGetStyles(callId, InspectorValue::null());
return;
}
DOMWindow* defaultView = node->ownerDocument()->defaultView();
if (!defaultView) {
- m_frontend->didGetStyles(callId, ScriptValue::undefined());
+ m_frontend->didGetStyles(callId, InspectorValue::null());
return;
}
Element* element = static_cast<Element*>(node);
RefPtr<CSSComputedStyleDeclaration> computedStyleInfo = computedStyle(node, true); // Support the viewing of :visited information in computed style.
- ScriptObject result = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> result = InspectorObject::create();
if (element->style())
- result.set("inlineStyle", buildObjectForStyle(element->style(), true));
- result.set("computedStyle", buildObjectForStyle(computedStyleInfo.get(), false));
+ result->set("inlineStyle", buildObjectForStyle(element->style(), true));
+ result->set("computedStyle", buildObjectForStyle(computedStyleInfo.get(), false));
CSSStyleSelector* selector = element->ownerDocument()->styleSelector();
RefPtr<CSSRuleList> matchedRules = selector->styleRulesForElement(element, authorOnly);
- result.set("matchedCSSRules", buildArrayForCSSRules(node->ownerDocument(), matchedRules.get()));
+ result->set("matchedCSSRules", buildArrayForCSSRules(node->ownerDocument(), matchedRules.get()));
- result.set("styleAttributes", buildObjectForAttributeStyles(element));
- result.set("pseudoElements", buildArrayForPseudoElements(element, authorOnly));
+ result->set("styleAttributes", buildObjectForAttributeStyles(element));
+ result->set("pseudoElements", buildArrayForPseudoElements(element, authorOnly));
- ScriptObject currentStyle = result;
+ RefPtr<InspectorObject> currentStyle = result;
Element* parentElement = element->parentElement();
while (parentElement) {
- ScriptObject parentStyle = m_frontend->newScriptObject();
- currentStyle.set("parent", parentStyle);
+ RefPtr<InspectorObject> parentStyle = InspectorObject::create();
+ currentStyle->set("parent", parentStyle);
if (parentElement->style() && parentElement->style()->length())
- parentStyle.set("inlineStyle", buildObjectForStyle(parentElement->style(), true));
+ parentStyle->set("inlineStyle", buildObjectForStyle(parentElement->style(), true));
CSSStyleSelector* parentSelector = parentElement->ownerDocument()->styleSelector();
RefPtr<CSSRuleList> parentMatchedRules = parentSelector->styleRulesForElement(parentElement, authorOnly);
- parentStyle.set("matchedCSSRules", buildArrayForCSSRules(parentElement->ownerDocument(), parentMatchedRules.get()));
+ parentStyle->set("matchedCSSRules", buildArrayForCSSRules(parentElement->ownerDocument(), parentMatchedRules.get()));
parentElement = parentElement->parentElement();
currentStyle = parentStyle;
}
- m_frontend->didGetStyles(callId, result);
+ m_frontend->didGetStyles(callId, result.release());
}
void InspectorDOMAgent::getAllStyles(long callId)
{
- ScriptArray result = m_frontend->newScriptArray();
- unsigned counter = 0;
+ RefPtr<InspectorArray> result = InspectorArray::create();
for (ListHashSet<RefPtr<Document> >::iterator it = m_documents.begin(); it != m_documents.end(); ++it) {
StyleSheetList* list = (*it)->styleSheets();
for (unsigned i = 0; i < list->length(); ++i) {
StyleSheet* styleSheet = list->item(i);
if (styleSheet->isCSSStyleSheet())
- result.set(counter++, buildObjectForStyleSheet((*it).get(), static_cast<CSSStyleSheet*>(styleSheet)));
+ result->push(buildObjectForStyleSheet((*it).get(), static_cast<CSSStyleSheet*>(styleSheet)));
}
}
- m_frontend->didGetAllStyles(callId, result);
+ m_frontend->didGetAllStyles(callId, result.release());
}
void InspectorDOMAgent::getStyleSheet(long callId, long styleSheetId)
@@ -1083,7 +1077,7 @@ void InspectorDOMAgent::getStyleSheet(long callId, long styleSheetId)
if (styleSheet && styleSheet->doc())
m_frontend->didGetStyleSheet(callId, buildObjectForStyleSheet(styleSheet->doc(), styleSheet));
else
- m_frontend->didGetStyleSheet(callId, ScriptObject::undefined());
+ m_frontend->didGetStyleSheet(callId, InspectorObject::create());
}
void InspectorDOMAgent::getRuleRangesForStyleSheetId(long callId, long styleSheetId)
@@ -1092,30 +1086,30 @@ void InspectorDOMAgent::getRuleRangesForStyleSheetId(long callId, long styleShee
if (styleSheet && styleSheet->doc()) {
HashMap<long, SourceRange> ruleRanges = cssStore()->getRuleRangesForStyleSheet(styleSheet);
if (!ruleRanges.size()) {
- m_frontend->didGetStyleSheet(callId, ScriptObject::undefined());
+ m_frontend->didGetStyleSheet(callId, InspectorObject::create());
return;
}
- ScriptObject result = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> result = InspectorObject::create();
for (HashMap<long, SourceRange>::iterator it = ruleRanges.begin(); it != ruleRanges.end(); ++it) {
if (it->second.second) {
- ScriptObject ruleRange = m_frontend->newScriptObject();
- result.set(String::number(it->first).utf8().data(), ruleRange);
- ScriptObject bodyRange = m_frontend->newScriptObject();
- ruleRange.set("bodyRange", bodyRange);
- bodyRange.set("start", it->second.first);
- bodyRange.set("end", it->second.second);
+ RefPtr<InspectorObject> ruleRange = InspectorObject::create();
+ result->set(String::number(it->first).utf8().data(), ruleRange);
+ RefPtr<InspectorObject> bodyRange = InspectorObject::create();
+ ruleRange->set("bodyRange", bodyRange);
+ bodyRange->setNumber("start", it->second.first);
+ bodyRange->setNumber("end", it->second.second);
}
}
m_frontend->didGetStyleSheet(callId, result);
} else
- m_frontend->didGetStyleSheet(callId, ScriptObject::undefined());
+ m_frontend->didGetStyleSheet(callId, InspectorValue::null());
}
void InspectorDOMAgent::getInlineStyle(long callId, long nodeId)
{
Node* node = nodeForId(nodeId);
if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetInlineStyle(callId, ScriptValue::undefined());
+ m_frontend->didGetInlineStyle(callId, InspectorValue::null());
return;
}
Element* element = static_cast<Element*>(node);
@@ -1126,13 +1120,13 @@ void InspectorDOMAgent::getComputedStyle(long callId, long nodeId)
{
Node* node = nodeForId(nodeId);
if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetComputedStyle(callId, ScriptValue::undefined());
+ m_frontend->didGetComputedStyle(callId, InspectorValue::null());
return;
}
DOMWindow* defaultView = node->ownerDocument()->defaultView();
if (!defaultView) {
- m_frontend->didGetComputedStyle(callId, ScriptValue::undefined());
+ m_frontend->didGetComputedStyle(callId, InspectorValue::null());
return;
}
@@ -1141,56 +1135,54 @@ void InspectorDOMAgent::getComputedStyle(long callId, long nodeId)
m_frontend->didGetComputedStyle(callId, buildObjectForStyle(computedStyle.get(), false));
}
-ScriptObject InspectorDOMAgent::buildObjectForAttributeStyles(Element* element)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForAttributeStyles(Element* element)
{
- ScriptObject styleAttributes = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> styleAttributes = InspectorObject::create();
NamedNodeMap* attributes = element->attributes();
for (unsigned i = 0; attributes && i < attributes->length(); ++i) {
Attribute* attribute = attributes->attributeItem(i);
if (attribute->style()) {
String attributeName = attribute->localName();
- styleAttributes.set(attributeName.utf8().data(), buildObjectForStyle(attribute->style(), true));
+ styleAttributes->set(attributeName.utf8().data(), buildObjectForStyle(attribute->style(), true));
}
}
return styleAttributes;
}
-ScriptArray InspectorDOMAgent::buildArrayForCSSRules(Document* ownerDocument, CSSRuleList* matchedRules)
+PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForCSSRules(Document* ownerDocument, CSSRuleList* matchedRules)
{
- ScriptArray matchedCSSRules = m_frontend->newScriptArray();
- unsigned counter = 0;
+ RefPtr<InspectorArray> matchedCSSRules = InspectorArray::create();
for (unsigned i = 0; matchedRules && i < matchedRules->length(); ++i) {
CSSRule* rule = matchedRules->item(i);
if (rule->type() == CSSRule::STYLE_RULE)
- matchedCSSRules.set(counter++, buildObjectForRule(ownerDocument, static_cast<CSSStyleRule*>(rule)));
+ matchedCSSRules->push(buildObjectForRule(ownerDocument, static_cast<CSSStyleRule*>(rule)));
}
- return matchedCSSRules;
+ return matchedCSSRules.release();
}
-ScriptArray InspectorDOMAgent::buildArrayForPseudoElements(Element* element, bool authorOnly)
+PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForPseudoElements(Element* element, bool authorOnly)
{
- ScriptArray result = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> result = InspectorArray::create();
CSSStyleSelector* selector = element->ownerDocument()->styleSelector();
RefPtr<RenderStyle> renderStyle = element->styleForRenderer();
- unsigned counter = 0;
for (PseudoId pseudoId = FIRST_PUBLIC_PSEUDOID; pseudoId < AFTER_LAST_INTERNAL_PSEUDOID; pseudoId = static_cast<PseudoId>(pseudoId + 1)) {
RefPtr<CSSRuleList> matchedRules = selector->pseudoStyleRulesForElement(element, pseudoId, authorOnly);
if (matchedRules && matchedRules->length()) {
- ScriptObject pseudoStyles = m_frontend->newScriptObject();
- pseudoStyles.set("pseudoId", static_cast<int>(pseudoId));
- pseudoStyles.set("rules", buildArrayForCSSRules(element->ownerDocument(), matchedRules.get()));
- result.set(counter++, pseudoStyles);
+ RefPtr<InspectorObject> pseudoStyles = InspectorObject::create();
+ pseudoStyles->setNumber("pseudoId", static_cast<int>(pseudoId));
+ pseudoStyles->set("rules", buildArrayForCSSRules(element->ownerDocument(), matchedRules.get()));
+ result->push(pseudoStyles.release());
}
}
- return result;
+ return result.release();
}
void InspectorDOMAgent::applyStyleText(long callId, long styleId, const String& styleText, const String& propertyName)
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
if (!style) {
- m_frontend->didApplyStyleText(callId, false, ScriptValue::undefined(), m_frontend->newScriptArray());
+ m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
return;
}
@@ -1220,21 +1212,21 @@ void InspectorDOMAgent::applyStyleText(long callId, long styleId, const String&
style->removeProperty(propertyName, ec);
if (ec) {
- m_frontend->didApplyStyleText(callId, false, ScriptValue::undefined(), m_frontend->newScriptArray());
+ m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
return;
}
}
// Notify caller that the property was successfully deleted.
if (!styleTextLength) {
- ScriptArray changedProperties = m_frontend->newScriptArray();
- changedProperties.set(0, propertyName);
- m_frontend->didApplyStyleText(callId, true, ScriptValue::undefined(), changedProperties);
+ RefPtr<InspectorArray> changedProperties = InspectorArray::create();
+ changedProperties->pushString(propertyName);
+ m_frontend->didApplyStyleText(callId, true, InspectorValue::null(), changedProperties.release());
return;
}
if (!tempStyle->length()) {
- m_frontend->didApplyStyleText(callId, false, ScriptValue::undefined(), m_frontend->newScriptArray());
+ m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
return;
}
@@ -1302,7 +1294,7 @@ void InspectorDOMAgent::toggleStyleEnabled(long callId, long styleId, const Stri
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
if (!style) {
- m_frontend->didToggleStyleEnabled(callId, ScriptValue::undefined());
+ m_frontend->didToggleStyleEnabled(callId, InspectorValue::null());
return;
}
@@ -1321,7 +1313,7 @@ void InspectorDOMAgent::toggleStyleEnabled(long callId, long styleId, const Stri
disabledStyle->remove(propertyName);
}
if (ec) {
- m_frontend->didToggleStyleEnabled(callId, ScriptValue::undefined());
+ m_frontend->didToggleStyleEnabled(callId, InspectorValue::null());
return;
}
m_frontend->didToggleStyleEnabled(callId, buildObjectForStyle(style, true));
@@ -1331,7 +1323,7 @@ void InspectorDOMAgent::setRuleSelector(long callId, long ruleId, const String&
{
CSSStyleRule* rule = cssStore()->ruleForId(ruleId);
if (!rule) {
- m_frontend->didSetRuleSelector(callId, ScriptValue::undefined(), false);
+ m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
return;
}
@@ -1341,7 +1333,7 @@ void InspectorDOMAgent::setRuleSelector(long callId, long ruleId, const String&
ExceptionCode ec = 0;
styleSheet->addRule(selector, rule->style()->cssText(), ec);
if (ec) {
- m_frontend->didSetRuleSelector(callId, ScriptValue::undefined(), false);
+ m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
return;
}
@@ -1354,7 +1346,7 @@ void InspectorDOMAgent::setRuleSelector(long callId, long ruleId, const String&
}
if (ec) {
- m_frontend->didSetRuleSelector(callId, ScriptValue::undefined(), false);
+ m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
return;
}
@@ -1365,7 +1357,7 @@ void InspectorDOMAgent::addRule(long callId, const String& selector, long select
{
Node* node = nodeForId(selectedNodeId);
if (!node) {
- m_frontend->didAddRule(callId, ScriptValue::undefined(), false);
+ m_frontend->didAddRule(callId, InspectorValue::null(), false);
return;
}
@@ -1376,7 +1368,7 @@ void InspectorDOMAgent::addRule(long callId, const String& selector, long select
ExceptionCode ec = 0;
styleSheet->addRule(selector, "", ec);
if (ec) {
- m_frontend->didAddRule(callId, ScriptValue::undefined(), false);
+ m_frontend->didAddRule(callId, InspectorValue::null(), false);
return;
}
@@ -1384,115 +1376,114 @@ void InspectorDOMAgent::addRule(long callId, const String& selector, long select
m_frontend->didAddRule(callId, buildObjectForRule(node->ownerDocument(), newRule), ruleAffectsNode(newRule, node));
}
-ScriptObject InspectorDOMAgent::buildObjectForStyle(CSSStyleDeclaration* style, bool bind)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForStyle(CSSStyleDeclaration* style, bool bind)
{
- ScriptObject result = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> result = InspectorObject::create();
if (bind) {
long styleId = cssStore()->bindStyle(style);
- result.set("id", styleId);
+ result->setNumber("id", styleId);
CSSStyleSheet* parentStyleSheet = getParentStyleSheet(style);
if (parentStyleSheet)
- result.set("parentStyleSheetId", cssStore()->bindStyleSheet(parentStyleSheet));
+ result->setNumber("parentStyleSheetId", cssStore()->bindStyleSheet(parentStyleSheet));
DisabledStyleDeclaration* disabledStyle = cssStore()->disabledStyleForId(styleId, false);
if (disabledStyle)
- result.set("disabled", buildArrayForDisabledStyleProperties(disabledStyle));
+ result->set("disabled", buildArrayForDisabledStyleProperties(disabledStyle));
}
- result.set("width", style->getPropertyValue("width"));
- result.set("height", style->getPropertyValue("height"));
- populateObjectWithStyleProperties(style, result);
- return result;
+ result->setString("width", style->getPropertyValue("width"));
+ result->setString("height", style->getPropertyValue("height"));
+ populateObjectWithStyleProperties(style, result.get());
+ return result.release();
}
-void InspectorDOMAgent::populateObjectWithStyleProperties(CSSStyleDeclaration* style, ScriptObject& result)
+void InspectorDOMAgent::populateObjectWithStyleProperties(CSSStyleDeclaration* style, InspectorObject* result)
{
- ScriptArray properties = m_frontend->newScriptArray();
- ScriptObject shorthandValues = m_frontend->newScriptObject();
- result.set("properties", properties);
- result.set("shorthandValues", shorthandValues);
+ RefPtr<InspectorArray> properties = InspectorArray::create();
+ RefPtr<InspectorObject> shorthandValues = InspectorObject::create();
HashSet<String> foundShorthands;
for (unsigned i = 0; i < style->length(); ++i) {
- ScriptObject property = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> property = InspectorObject::create();
String name = style->item(i);
- property.set("name", name);
- property.set("priority", style->getPropertyPriority(name));
- property.set("implicit", style->isPropertyImplicit(name));
+ property->setString("name", name);
+ property->setString("priority", style->getPropertyPriority(name));
+ property->setBool("implicit", style->isPropertyImplicit(name));
String shorthand = style->getPropertyShorthand(name);
- property.set("shorthand", shorthand);
+ property->setString("shorthand", shorthand);
if (!shorthand.isEmpty() && !foundShorthands.contains(shorthand)) {
foundShorthands.add(shorthand);
- shorthandValues.set(shorthand, shorthandValue(style, shorthand));
+ shorthandValues->setString(shorthand, shorthandValue(style, shorthand));
}
- property.set("value", style->getPropertyValue(name));
- properties.set(i, property);
+ property->setString("value", style->getPropertyValue(name));
+ properties->push(property.release());
}
+ result->set("properties", properties);
+ result->set("shorthandValues", shorthandValues);
}
-ScriptArray InspectorDOMAgent::buildArrayForDisabledStyleProperties(DisabledStyleDeclaration* declaration)
+PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForDisabledStyleProperties(DisabledStyleDeclaration* declaration)
{
- int counter = 0;
- ScriptArray properties = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> properties = InspectorArray::create();
for (DisabledStyleDeclaration::iterator it = declaration->begin(); it != declaration->end(); ++it) {
- ScriptObject property = m_frontend->newScriptObject();
- property.set("name", it->first);
- property.set("value", it->second.first);
- property.set("priority", it->second.second);
- properties.set(counter++, property);
+ RefPtr<InspectorObject> property = InspectorObject::create();
+ property->setString("name", it->first);
+ property->setString("value", it->second.first);
+ property->setString("priority", it->second.second);
+ properties->push(property.release());
}
- return properties;
+ return properties.release();
}
-ScriptObject InspectorDOMAgent::buildObjectForStyleSheet(Document* ownerDocument, CSSStyleSheet* styleSheet)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForStyleSheet(Document* ownerDocument, CSSStyleSheet* styleSheet)
{
- ScriptObject result = m_frontend->newScriptObject();
+ RefPtr<InspectorObject> result = InspectorObject::create();
long id = cssStore()->bindStyleSheet(styleSheet);
- result.set("id", id);
- result.set("disabled", styleSheet->disabled());
- result.set("href", styleSheet->href());
- result.set("title", styleSheet->title());
- result.set("documentElementId", m_documentNodeToIdMap.get(styleSheet->doc()));
- ScriptArray cssRules = m_frontend->newScriptArray();
- result.set("cssRules", cssRules);
+ result->setNumber("id", id);
+ result->setBool("disabled", styleSheet->disabled());
+ result->setString("href", styleSheet->href());
+ result->setString("title", styleSheet->title());
+ result->setNumber("documentElementId", m_documentNodeToIdMap.get(styleSheet->doc()));
+ RefPtr<InspectorArray> cssRules = InspectorArray::create();
PassRefPtr<CSSRuleList> cssRuleList = CSSRuleList::create(styleSheet, true);
- if (!cssRuleList)
- return result;
- unsigned counter = 0;
- for (unsigned i = 0; i < cssRuleList->length(); ++i) {
- CSSRule* rule = cssRuleList->item(i);
- if (rule->isStyleRule())
- cssRules.set(counter++, buildObjectForRule(ownerDocument, static_cast<CSSStyleRule*>(rule)));
+ if (cssRuleList) {
+ for (unsigned i = 0; i < cssRuleList->length(); ++i) {
+ CSSRule* rule = cssRuleList->item(i);
+ if (rule->isStyleRule())
+ cssRules->push(buildObjectForRule(ownerDocument, static_cast<CSSStyleRule*>(rule)));
+ }
}
- return result;
+ result->set("cssRules", cssRules.release());
+ return result.release();
}
-ScriptObject InspectorDOMAgent::buildObjectForRule(Document* ownerDocument, CSSStyleRule* rule)
+PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForRule(Document* ownerDocument, CSSStyleRule* rule)
{
CSSStyleSheet* parentStyleSheet = rule->parentStyleSheet();
- ScriptObject result = m_frontend->newScriptObject();
- result.set("selectorText", rule->selectorText());
- result.set("cssText", rule->cssText());
- result.set("sourceLine", rule->sourceLine());
+ RefPtr<InspectorObject> result = InspectorObject::create();
+ result->setString("selectorText", rule->selectorText());
+ result->setString("cssText", rule->cssText());
+ result->setNumber("sourceLine", rule->sourceLine());
+ result->setString("documentURL", documentURLString(ownerDocument));
if (parentStyleSheet) {
- ScriptObject parentStyleSheetValue = m_frontend->newScriptObject();
- result.set("parentStyleSheet", parentStyleSheetValue);
- parentStyleSheetValue.set("href", parentStyleSheet->href());
- parentStyleSheetValue.set("id", cssStore()->bindStyleSheet(parentStyleSheet));
+ RefPtr<InspectorObject> parentStyleSheetValue = InspectorObject::create();
+ parentStyleSheetValue->setString("href", parentStyleSheet->href());
+ parentStyleSheetValue->setNumber("id", cssStore()->bindStyleSheet(parentStyleSheet));
+ result->set("parentStyleSheet", parentStyleSheetValue.release());
}
bool isUserAgent = parentStyleSheet && !parentStyleSheet->ownerNode() && parentStyleSheet->href().isEmpty();
bool isUser = parentStyleSheet && parentStyleSheet->ownerNode() && parentStyleSheet->ownerNode()->nodeName() == "#document";
- result.set("isUserAgent", isUserAgent);
- result.set("isUser", isUser);
- result.set("isViaInspector", rule->parentStyleSheet() == cssStore()->inspectorStyleSheet(ownerDocument, false, -1));
+ result->setBool("isUserAgent", isUserAgent);
+ result->setBool("isUser", isUser);
+ result->setBool("isViaInspector", rule->parentStyleSheet() == cssStore()->inspectorStyleSheet(ownerDocument, false, -1));
// Bind editable scripts only.
bool bind = !isUserAgent && !isUser;
- result.set("style", buildObjectForStyle(rule->style(), bind));
+ result->set("style", buildObjectForStyle(rule->style(), bind));
if (bind)
- result.set("id", cssStore()->bindRule(rule));
- return result;
+ result->setNumber("id", cssStore()->bindRule(rule));
+ return result.release();
}
Vector<String> InspectorDOMAgent::longhandProperties(CSSStyleDeclaration* style, const String& shorthandProperty)
@@ -1593,12 +1584,12 @@ Node* InspectorDOMAgent::nodeForPath(const String& path)
return node;
}
-ScriptArray InspectorDOMAgent::toArray(const Vector<String>& data)
+PassRefPtr<InspectorArray> InspectorDOMAgent::toArray(const Vector<String>& data)
{
- ScriptArray result = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> result = InspectorArray::create();
for (unsigned i = 0; i < data.size(); ++i)
- result.set(i, data[i]);
- return result;
+ result->pushString(data[i]);
+ return result.release();
}
CSSStyleSheet* InspectorDOMAgent::getParentStyleSheet(CSSStyleDeclaration* style)
@@ -1634,15 +1625,14 @@ void InspectorDOMAgent::onMatchJobsTimer(Timer<InspectorDOMAgent>*)
void InspectorDOMAgent::reportNodesAsSearchResults(ListHashSet<Node*>& resultCollector)
{
- ScriptArray nodeIds = m_frontend->newScriptArray();
- int index = 0;
+ RefPtr<InspectorArray> nodeIds = InspectorArray::create();
for (ListHashSet<Node*>::iterator it = resultCollector.begin(); it != resultCollector.end(); ++it) {
if (m_searchResults.contains(*it))
continue;
m_searchResults.add(*it);
- nodeIds.set(index++, static_cast<long long>(pushNodePathToFrontend(*it)));
+ nodeIds->pushNumber(static_cast<long long>(pushNodePathToFrontend(*it)));
}
- m_frontend->addNodesToSearchResult(nodeIds);
+ m_frontend->addNodesToSearchResult(nodeIds.release());
}
} // namespace WebCore
diff --git a/WebCore/inspector/InspectorDOMAgent.h b/WebCore/inspector/InspectorDOMAgent.h
index 70d5b94..c00c133 100644
--- a/WebCore/inspector/InspectorDOMAgent.h
+++ b/WebCore/inspector/InspectorDOMAgent.h
@@ -35,9 +35,8 @@
#include "EventListener.h"
#include "EventTarget.h"
#include "InspectorCSSStore.h"
+#include "InspectorValues.h"
#include "NodeList.h"
-#include "ScriptArray.h"
-#include "ScriptObject.h"
#include "ScriptState.h"
#include "Timer.h"
@@ -57,7 +56,7 @@ namespace WebCore {
class CSSStyleSheet;
class Element;
class Event;
- class InspectorFrontend;
+ class InspectorFrontend2;
class MatchJob;
class NameNodeMap;
class Node;
@@ -78,7 +77,7 @@ namespace WebCore {
class InspectorDOMAgent : public EventListener {
public:
- static PassRefPtr<InspectorDOMAgent> create(InspectorCSSStore* cssStore, InspectorFrontend* frontend)
+ static PassRefPtr<InspectorDOMAgent> create(InspectorCSSStore* cssStore, InspectorFrontend2* frontend)
{
return adoptRef(new InspectorDOMAgent(cssStore, frontend));
}
@@ -90,7 +89,7 @@ namespace WebCore {
: 0;
}
- InspectorDOMAgent(InspectorCSSStore* cssStore, InspectorFrontend* frontend);
+ InspectorDOMAgent(InspectorCSSStore* cssStore, InspectorFrontend2* frontend);
~InspectorDOMAgent();
void reset();
@@ -153,14 +152,14 @@ namespace WebCore {
bool pushDocumentToFrontend();
- ScriptObject buildObjectForAttributeStyles(Element* element);
- ScriptArray buildArrayForCSSRules(Document* ownerDocument, CSSRuleList*);
- ScriptArray buildArrayForPseudoElements(Element* element, bool authorOnly);
+ PassRefPtr<InspectorObject> buildObjectForAttributeStyles(Element* element);
+ PassRefPtr<InspectorArray> buildArrayForCSSRules(Document* ownerDocument, CSSRuleList*);
+ PassRefPtr<InspectorArray> buildArrayForPseudoElements(Element* element, bool authorOnly);
- ScriptObject buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap);
- ScriptArray buildArrayForElementAttributes(Element* element);
- ScriptArray buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
- ScriptObject buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node);
+ PassRefPtr<InspectorObject> buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap);
+ PassRefPtr<InspectorArray> buildArrayForElementAttributes(Element* element);
+ PassRefPtr<InspectorArray> buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
+ PassRefPtr<InspectorObject> buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node);
// 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.
@@ -178,22 +177,22 @@ namespace WebCore {
void onMatchJobsTimer(Timer<InspectorDOMAgent>*);
void reportNodesAsSearchResults(ListHashSet<Node*>& resultCollector);
- ScriptObject buildObjectForStyle(CSSStyleDeclaration*, bool bind);
- void populateObjectWithStyleProperties(CSSStyleDeclaration*, ScriptObject& result);
- ScriptArray buildArrayForDisabledStyleProperties(DisabledStyleDeclaration*);
- ScriptObject buildObjectForRule(Document* ownerDocument, CSSStyleRule*);
- ScriptObject buildObjectForStyleSheet(Document* ownerDocument, CSSStyleSheet*);
+ PassRefPtr<InspectorObject> buildObjectForStyle(CSSStyleDeclaration*, bool bind);
+ void populateObjectWithStyleProperties(CSSStyleDeclaration*, InspectorObject* result);
+ PassRefPtr<InspectorArray> buildArrayForDisabledStyleProperties(DisabledStyleDeclaration*);
+ PassRefPtr<InspectorObject> buildObjectForRule(Document* ownerDocument, CSSStyleRule*);
+ PassRefPtr<InspectorObject> buildObjectForStyleSheet(Document* ownerDocument, CSSStyleSheet*);
Vector<String> longhandProperties(CSSStyleDeclaration*, const String& shorthandProperty);
String shorthandValue(CSSStyleDeclaration*, const String& shorthandProperty);
String shorthandPriority(CSSStyleDeclaration*, const String& shorthandProperty);
bool ruleAffectsNode(CSSStyleRule*, Node*);
Node* nodeForPath(const String& path);
- ScriptArray toArray(const Vector<String>& data);
+ PassRefPtr<InspectorArray> toArray(const Vector<String>& data);
void discardBindings();
InspectorCSSStore* m_cssStore;
- InspectorFrontend* m_frontend;
+ InspectorFrontend2* m_frontend;
NodeToIdMap m_documentNodeToIdMap;
// Owns node mappings for dangling nodes.
Vector<NodeToIdMap*> m_danglingNodeToIdMaps;
diff --git a/WebCore/inspector/InspectorFrontend.cpp b/WebCore/inspector/InspectorFrontend.cpp
index fee4630..f9a29b6 100644
--- a/WebCore/inspector/InspectorFrontend.cpp
+++ b/WebCore/inspector/InspectorFrontend.cpp
@@ -297,14 +297,6 @@ void InspectorFrontend::timelineProfilerWasStopped()
callSimpleFunction("timelineProfilerWasStopped");
}
-void InspectorFrontend::addRecordToTimeline(const ScriptObject& record)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("addRecordToTimeline");
- function.appendArgument(record);
- function.call();
-}
-
#if ENABLE(JAVASCRIPT_DEBUGGER)
void InspectorFrontend::attachDebuggerWhenShown()
{
@@ -450,104 +442,6 @@ void InspectorFrontend::didGetProfile(long callId, const ScriptValue& profile)
}
#endif
-void InspectorFrontend::setDocument(const ScriptObject& root)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("setDocument");
- function.appendArgument(root);
- function.call();
-}
-
-void InspectorFrontend::setDetachedRoot(const ScriptObject& root)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("setDetachedRoot");
- function.appendArgument(root);
- function.call();
-}
-
-void InspectorFrontend::setChildNodes(long parentId, const ScriptArray& nodes)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("setChildNodes");
- function.appendArgument(parentId);
- function.appendArgument(nodes);
- function.call();
-}
-
-void InspectorFrontend::childNodeCountUpdated(long id, int newValue)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("childNodeCountUpdated");
- function.appendArgument(id);
- function.appendArgument(newValue);
- function.call();
-}
-
-void InspectorFrontend::childNodeInserted(long parentId, long prevId, const ScriptObject& node)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("childNodeInserted");
- function.appendArgument(parentId);
- function.appendArgument(prevId);
- function.appendArgument(node);
- function.call();
-}
-
-void InspectorFrontend::childNodeRemoved(long parentId, long id)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("childNodeRemoved");
- function.appendArgument(parentId);
- function.appendArgument(id);
- function.call();
-}
-
-void InspectorFrontend::attributesUpdated(long id, const ScriptArray& attributes)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("attributesUpdated");
- function.appendArgument(id);
- function.appendArgument(attributes);
- function.call();
-}
-
-void InspectorFrontend::didRemoveNode(long callId, long nodeId)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didRemoveNode");
- function.appendArgument(callId);
- function.appendArgument(nodeId);
- function.call();
-}
-
-void InspectorFrontend::didChangeTagName(long callId, long nodeId)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didChangeTagName");
- function.appendArgument(callId);
- function.appendArgument(nodeId);
- function.call();
-}
-
-void InspectorFrontend::didGetOuterHTML(long callId, const String& outerHTML)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetOuterHTML");
- function.appendArgument(callId);
- function.appendArgument(outerHTML);
- function.call();
-}
-
-void InspectorFrontend::didSetOuterHTML(long callId, long nodeId)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didSetOuterHTML");
- function.appendArgument(callId);
- function.appendArgument(nodeId);
- function.call();
-}
-
void InspectorFrontend::didPushNodeByPathToFrontend(long callId, long nodeId)
{
ScriptFunctionCall function(m_webInspector, "dispatch");
@@ -557,136 +451,6 @@ void InspectorFrontend::didPushNodeByPathToFrontend(long callId, long nodeId)
function.call();
}
-void InspectorFrontend::didGetChildNodes(long callId)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetChildNodes");
- function.appendArgument(callId);
- function.call();
-}
-
-void InspectorFrontend::didApplyDomChange(long callId, bool success)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didApplyDomChange");
- function.appendArgument(callId);
- function.appendArgument(success);
- function.call();
-}
-
-void InspectorFrontend::didGetEventListenersForNode(long callId, long nodeId, const ScriptArray& listenersArray)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetEventListenersForNode");
- function.appendArgument(callId);
- function.appendArgument(nodeId);
- function.appendArgument(listenersArray);
- function.call();
-}
-
-void InspectorFrontend::didGetStyles(long callId, const ScriptValue& styles)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetStyles");
- function.appendArgument(callId);
- function.appendArgument(styles);
- function.call();
-}
-
-void InspectorFrontend::didGetAllStyles(long callId, const ScriptArray& styles)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetAllStyles");
- function.appendArgument(callId);
- function.appendArgument(styles);
- function.call();
-}
-
-void InspectorFrontend::didGetStyleSheet(long callId, const ScriptValue& styleSheet)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetStyleSheet");
- function.appendArgument(callId);
- function.appendArgument(styleSheet);
- function.call();
-}
-
-void InspectorFrontend::didGetComputedStyle(long callId, const ScriptValue& style)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetComputedStyle");
- function.appendArgument(callId);
- function.appendArgument(style);
- function.call();
-}
-
-void InspectorFrontend::didGetInlineStyle(long callId, const ScriptValue& style)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetInlineStyle");
- function.appendArgument(callId);
- function.appendArgument(style);
- function.call();
-}
-
-void InspectorFrontend::didApplyStyleText(long callId, bool success, const ScriptValue& style, const ScriptArray& changedProperties)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didApplyStyleText");
- function.appendArgument(callId);
- function.appendArgument(success);
- function.appendArgument(style);
- function.appendArgument(changedProperties);
- function.call();
-}
-
-void InspectorFrontend::didSetStyleText(long callId, bool success)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didSetStyleText");
- function.appendArgument(callId);
- function.appendArgument(success);
- function.call();
-}
-
-void InspectorFrontend::didSetStyleProperty(long callId, bool success)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didSetStyleProperty");
- function.appendArgument(callId);
- function.appendArgument(success);
- function.call();
-}
-
-void InspectorFrontend::didToggleStyleEnabled(long callId, const ScriptValue& style)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didToggleStyleEnabled");
- function.appendArgument(callId);
- function.appendArgument(style);
- function.call();
-}
-
-void InspectorFrontend::didSetRuleSelector(long callId, const ScriptValue& rule, bool selectorAffectsNode)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didSetRuleSelector");
- function.appendArgument(callId);
- function.appendArgument(rule);
- function.appendArgument(selectorAffectsNode);
- function.call();
-}
-
-void InspectorFrontend::didAddRule(long callId, const ScriptValue& rule, bool selectorAffectsNode)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didAddRule");
- function.appendArgument(callId);
- function.appendArgument(rule);
- function.appendArgument(selectorAffectsNode);
- function.call();
-}
-
#if ENABLE(WORKERS)
void InspectorFrontend::didCreateWorker(const InspectorWorkerResource& worker)
{
@@ -809,21 +573,40 @@ void InspectorFrontend::didRemoveDOMStorageItem(long callId, bool success)
void InspectorFrontend::updateDOMStorage(long storageId)
{
- ScriptFunctionCall function(m_webInspector, "dispatch");
+ ScriptFunctionCall function(m_webInspector, "dispatch");
function.appendArgument("updateDOMStorage");
function.appendArgument(storageId);
function.call();
}
#endif
-void InspectorFrontend::addNodesToSearchResult(const ScriptArray& nodeIds)
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+void InspectorFrontend::didGetApplicationCaches(long callId, const ScriptValue& applicationCaches)
+{
+ ScriptFunctionCall function(m_webInspector, "dispatch");
+ function.appendArgument("didGetApplicationCaches");
+ function.appendArgument(callId);
+ function.appendArgument(applicationCaches);
+ function.call();
+}
+
+void InspectorFrontend::updateApplicationCacheStatus(int status)
{
ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("addNodesToSearchResult");
- function.appendArgument(nodeIds);
+ function.appendArgument("updateApplicationCacheStatus");
+ function.appendArgument(status);
function.call();
}
+void InspectorFrontend::updateNetworkState(bool isNowOnline)
+{
+ ScriptFunctionCall function(m_webInspector, "dispatch");
+ function.appendArgument("updateNetworkState");
+ function.appendArgument(isNowOnline);
+ function.call();
+}
+#endif
+
void InspectorFrontend::contextMenuItemSelected(int itemId)
{
ScriptFunctionCall function(m_webInspector, "dispatch");
diff --git a/WebCore/inspector/InspectorFrontend.h b/WebCore/inspector/InspectorFrontend.h
index e02b661..e32f40c 100644
--- a/WebCore/inspector/InspectorFrontend.h
+++ b/WebCore/inspector/InspectorFrontend.h
@@ -135,37 +135,16 @@ namespace WebCore {
void updateDOMStorage(long storageId);
#endif
- void setDocument(const ScriptObject& root);
- void setDetachedRoot(const ScriptObject& root);
- void setChildNodes(long parentId, const ScriptArray& nodes);
- void childNodeCountUpdated(long id, int newValue);
- void childNodeInserted(long parentId, long prevId, const ScriptObject& node);
- void childNodeRemoved(long parentId, long id);
- void attributesUpdated(long id, const ScriptArray& attributes);
- void didGetChildNodes(long callId);
- void didApplyDomChange(long callId, bool success);
- void didGetEventListenersForNode(long callId, long nodeId, const ScriptArray& listenersArray);
- void didRemoveNode(long callId, long nodeId);
- void didChangeTagName(long callId, long nodeId);
- void didGetOuterHTML(long callId, const String& outerHTML);
- void didSetOuterHTML(long callId, long nodeId);
- void didPushNodeByPathToFrontend(long callId, long nodeId);
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ void updateApplicationCacheStatus(int status);
+ void updateNetworkState(bool isNowOnline);
+ void didGetApplicationCaches(long callId, const ScriptValue& applicationCaches);
+#endif
- void didGetStyles(long callId, const ScriptValue& styles);
- void didGetAllStyles(long callId, const ScriptArray& styles);
- void didGetInlineStyle(long callId, const ScriptValue& style);
- void didGetStyleSheet(long callId, const ScriptValue& styleSheet);
- void didGetComputedStyle(long callId, const ScriptValue& style);
- void didApplyStyleText(long callId, bool success, const ScriptValue& style, const ScriptArray& changedProperties);
- void didSetStyleText(long callId, bool success);
- void didSetStyleProperty(long callId, bool success);
- void didToggleStyleEnabled(long callId, const ScriptValue& style);
- void didSetRuleSelector(long callId, const ScriptValue& rule, bool selectorAffectsNode);
- void didAddRule(long callId, const ScriptValue& rule, bool selectorAffectsNode);
+ void didPushNodeByPathToFrontend(long callId, long nodeId);
void timelineProfilerWasStarted();
void timelineProfilerWasStopped();
- void addRecordToTimeline(const ScriptObject&);
#if ENABLE(WORKERS)
void didCreateWorker(const InspectorWorkerResource&);
@@ -175,14 +154,13 @@ namespace WebCore {
void didGetCookies(long callId, const ScriptArray& cookies, const String& cookiesString);
void didDispatchOnInjectedScript(long callId, SerializedScriptValue* result, bool isException);
- void addNodesToSearchResult(const ScriptArray& nodeIds);
-
void contextMenuItemSelected(int itemId);
void contextMenuCleared();
ScriptState* scriptState() const { return m_webInspector.scriptState(); }
void evaluateForTestInFrontend(long callId, const String& script);
+
private:
void callSimpleFunction(const String& functionName);
ScriptObject m_webInspector;
diff --git a/WebCore/inspector/InspectorFrontend2.idl b/WebCore/inspector/InspectorFrontend2.idl
new file mode 100644
index 0000000..b96d715
--- /dev/null
+++ b/WebCore/inspector/InspectorFrontend2.idl
@@ -0,0 +1,39 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module WebCore {
+
+ interface [Conditional=INSPECTOR, JS] InspectorFrontend2 {
+ // TimelineAgent
+ void addRecordToTimeline(in Object record);
+
+ // DOMAgent
+ void addNodesToSearchResult(in Array nodeIds);
+ void attributesUpdated(in long id, in Array attributes);
+ void childNodeCountUpdated(in long id, in int newValue);
+ void childNodeInserted(in long parentId, in long prevId, in Object node);
+ void childNodeRemoved(in long parentId, in long id);
+ void didAddRule(in long callId, in Value rule, in boolean selectorAffectsNode);
+ void didApplyDomChange(in long callId, in boolean success);
+ void didApplyStyleText(in long callId, in boolean success, in Value style, in Array changedProperties);
+ void didChangeTagName(in long callId, in long nodeId);
+ void didGetAllStyles(in long callId, in Array styles);
+ void didGetChildNodes(in long callId);
+ void didGetComputedStyle(in long callId, in Value style);
+ void didGetEventListenersForNode(in long callId, in long nodeId, in Array listenersArray);
+ void didGetInlineStyle(in long callId, in Value style);
+ void didGetOuterHTML(in long callId, in String outerHTML);
+ void didGetStyleSheet(in long callId, in Value styleSheet);
+ void didGetStyles(in long callId, in Value styles);
+ void didRemoveNode(in long callId, in long nodeId);
+ void didSetOuterHTML(in long callId, in long nodeId);
+ void didSetRuleSelector(in long callId, in Value rule, in boolean selectorAffectsNode);
+ void didSetStyleProperty(in long callId, in boolean success);
+ void didSetStyleText(in long callId, in boolean success);
+ void didToggleStyleEnabled(in long callId, in Value style);
+ void setChildNodes(in long parentId, in Array nodes);
+ void setDetachedRoot(in Object root);
+ void setDocument(in Value root);
+ };
+}
diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index f0e391d..91a57e0 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -39,6 +39,7 @@
#include "DocumentLoader.h"
#include "Frame.h"
#include "InspectorFrontend.h"
+#include "ResourceLoadTiming.h"
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "TextEncoding.h"
@@ -62,6 +63,7 @@ InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* l
, m_endTime(-1.0)
, m_loadEventTime(-1.0)
, m_domContentEventTime(-1.0)
+ , m_connectionID(0)
, m_isMainResource(false)
{
}
@@ -128,6 +130,16 @@ void InspectorResource::updateResponse(const ResourceResponse& response)
m_responseStatusText = response.httpStatusText();
m_suggestedFilename = response.suggestedFilename();
+ m_connectionID = response.connectionID();
+ m_loadTiming = response.resourceLoadTiming();
+ m_cached = response.wasCached();
+
+ if (!m_cached && m_loadTiming && m_loadTiming->requestTime)
+ m_responseReceivedTime = m_loadTiming->requestTime + m_loadTiming->receiveHeadersEnd / 1000.0;
+ else
+ m_responseReceivedTime = currentTime();
+
+ m_changes.set(TimingChange);
m_changes.set(ResponseChange);
m_changes.set(TypeChange);
}
@@ -140,7 +152,6 @@ static void populateHeadersObject(ScriptObject* object, const HTTPHeaderMap& hea
}
}
-
void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
{
if (m_changes.hasChange(NoChange))
@@ -160,7 +171,6 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
jsonObject.set("requestMethod", m_requestMethod);
jsonObject.set("requestFormData", m_requestFormData);
jsonObject.set("didRequestChange", true);
- jsonObject.set("cached", m_cached);
}
if (m_changes.hasChange(ResponseChange)) {
@@ -172,6 +182,10 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
ScriptObject responseHeaders = frontend->newScriptObject();
populateHeadersObject(&responseHeaders, m_responseHeaderFields);
jsonObject.set("responseHeaders", responseHeaders);
+ jsonObject.set("connectionID", m_connectionID);
+ jsonObject.set("cached", m_cached);
+ if (m_loadTiming && !m_cached)
+ jsonObject.set("timing", buildObjectForTiming(frontend, m_loadTiming.get()));
jsonObject.set("didResponseChange", true);
}
@@ -335,12 +349,6 @@ void InspectorResource::startTiming()
m_changes.set(TimingChange);
}
-void InspectorResource::markResponseReceivedTime()
-{
- m_responseReceivedTime = currentTime();
- m_changes.set(TimingChange);
-}
-
void InspectorResource::endTiming()
{
m_endTime = currentTime();
@@ -379,6 +387,19 @@ void InspectorResource::addLength(int lengthReceived)
m_changes.set(TimingChange);
}
+ScriptObject InspectorResource::buildObjectForTiming(InspectorFrontend* frontend, ResourceLoadTiming* timing)
+{
+ ScriptObject jsonObject = frontend->newScriptObject();
+ jsonObject.set("requestTime", timing->requestTime);
+ jsonObject.set("proxyDuration", timing->proxyStart == -1 ? -1 : (timing->proxyEnd - timing->proxyStart) / 1000.0);
+ jsonObject.set("dnsDuration", timing->dnsStart == -1 ? -1 : (timing->dnsEnd - timing->dnsStart) / 1000.0);
+ jsonObject.set("connectDuration", timing->connectStart == -1 ? -1 : (timing->connectEnd - timing->connectStart) / 1000.0);
+ jsonObject.set("sendDuration", (timing->sendEnd - timing->sendStart) / 1000.0);
+ jsonObject.set("waitDuration", (timing->receiveHeadersEnd - timing->sendEnd) / 1000.0);
+ jsonObject.set("sslDuration", (timing->sslEnd - timing->sslStart) / 1000.0);
+ return jsonObject;
+}
+
} // namespace WebCore
#endif // ENABLE(INSPECTOR)
diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
index 9b91889..ed9ec37 100644
--- a/WebCore/inspector/InspectorResource.h
+++ b/WebCore/inspector/InspectorResource.h
@@ -49,9 +49,9 @@ namespace WebCore {
class DocumentLoader;
class InspectorFrontend;
class Frame;
- class ResourceResponse;
-
+ class ResourceLoadTiming;
class ResourceRequest;
+ class ResourceResponse;
class InspectorResource : public RefCounted<InspectorResource> {
public:
@@ -102,7 +102,6 @@ namespace WebCore {
String requestFormData() const { return m_requestFormData; }
void startTiming();
- void markResponseReceivedTime();
void markLoadEventTime();
void markDOMContentEventTime();
void endTiming();
@@ -152,6 +151,8 @@ namespace WebCore {
Type cachedResourceType() const;
CachedResource* cachedResource() const;
+ ScriptObject buildObjectForTiming(InspectorFrontend*, ResourceLoadTiming*);
+
unsigned long m_identifier;
RefPtr<DocumentLoader> m_loader;
RefPtr<Frame> m_frame;
@@ -172,6 +173,8 @@ namespace WebCore {
double m_endTime;
double m_loadEventTime;
double m_domContentEventTime;
+ unsigned m_connectionID;
+ RefPtr<ResourceLoadTiming> m_loadTiming;
ScriptString m_overrideContent;
Type m_overrideContentType;
Changes m_changes;
diff --git a/WebCore/inspector/InspectorTimelineAgent.cpp b/WebCore/inspector/InspectorTimelineAgent.cpp
index ab53319..31513d1 100644
--- a/WebCore/inspector/InspectorTimelineAgent.cpp
+++ b/WebCore/inspector/InspectorTimelineAgent.cpp
@@ -34,8 +34,8 @@
#if ENABLE(INSPECTOR)
#include "Event.h"
-#include "InspectorFrontend.h"
#include "IntRect.h"
+#include "RemoteInspectorFrontend2.h"
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "TimelineRecordFactory.h"
@@ -46,7 +46,7 @@ namespace WebCore {
int InspectorTimelineAgent::s_instanceCount = 0;
-InspectorTimelineAgent::InspectorTimelineAgent(InspectorFrontend* frontend)
+InspectorTimelineAgent::InspectorTimelineAgent(InspectorFrontend2* frontend)
: m_frontend(frontend)
{
++s_instanceCount;
@@ -62,10 +62,10 @@ void InspectorTimelineAgent::pushGCEventRecords()
GCEvents events = m_gcEvents;
m_gcEvents.clear();
for (GCEvents::iterator i = events.begin(); i != events.end(); ++i) {
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, i->startTime);
- record.set("data", TimelineRecordFactory::createGCEventData(m_frontend, i->collectedBytes));
- record.set("endTime", i->endTime);
- addRecordToTimeline(record, GCEventTimelineRecordType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(i->startTime);
+ record->set("data", TimelineRecordFactory::createGCEventData(i->collectedBytes));
+ record->setNumber("endTime", i->endTime);
+ addRecordToTimeline(record.release(), GCEventTimelineRecordType);
}
}
@@ -83,7 +83,7 @@ InspectorTimelineAgent::~InspectorTimelineAgent()
void InspectorTimelineAgent::willCallFunction(const String& scriptName, int scriptLine)
{
- pushCurrentRecord(TimelineRecordFactory::createFunctionCallData(m_frontend, scriptName, scriptLine), FunctionCallTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createFunctionCallData(scriptName, scriptLine), FunctionCallTimelineRecordType);
}
void InspectorTimelineAgent::didCallFunction()
@@ -93,7 +93,7 @@ void InspectorTimelineAgent::didCallFunction()
void InspectorTimelineAgent::willDispatchEvent(const Event& event)
{
- pushCurrentRecord(TimelineRecordFactory::createEventDispatchData(m_frontend, event),
+ pushCurrentRecord(TimelineRecordFactory::createEventDispatchData(event),
EventDispatchTimelineRecordType);
}
@@ -104,7 +104,7 @@ void InspectorTimelineAgent::didDispatchEvent()
void InspectorTimelineAgent::willLayout()
{
- pushCurrentRecord(m_frontend->newScriptObject(), LayoutTimelineRecordType);
+ pushCurrentRecord(InspectorObject::create(), LayoutTimelineRecordType);
}
void InspectorTimelineAgent::didLayout()
@@ -114,7 +114,7 @@ void InspectorTimelineAgent::didLayout()
void InspectorTimelineAgent::willRecalculateStyle()
{
- pushCurrentRecord(m_frontend->newScriptObject(), RecalculateStylesTimelineRecordType);
+ pushCurrentRecord(InspectorObject::create(), RecalculateStylesTimelineRecordType);
}
void InspectorTimelineAgent::didRecalculateStyle()
@@ -124,7 +124,7 @@ void InspectorTimelineAgent::didRecalculateStyle()
void InspectorTimelineAgent::willPaint(const IntRect& rect)
{
- pushCurrentRecord(TimelineRecordFactory::createPaintData(m_frontend, rect), PaintTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createPaintData(rect), PaintTimelineRecordType);
}
void InspectorTimelineAgent::didPaint()
@@ -134,14 +134,14 @@ void InspectorTimelineAgent::didPaint()
void InspectorTimelineAgent::willWriteHTML(unsigned int length, unsigned int startLine)
{
- pushCurrentRecord(TimelineRecordFactory::createParseHTMLData(m_frontend, length, startLine), ParseHTMLTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createParseHTMLData(length, startLine), ParseHTMLTimelineRecordType);
}
void InspectorTimelineAgent::didWriteHTML(unsigned int endLine)
{
if (!m_recordStack.isEmpty()) {
TimelineRecordEntry entry = m_recordStack.last();
- entry.data.set("endLine", endLine);
+ entry.data->setNumber("endLine", endLine);
didCompleteCurrentRecord(ParseHTMLTimelineRecordType);
}
}
@@ -149,22 +149,22 @@ void InspectorTimelineAgent::didWriteHTML(unsigned int endLine)
void InspectorTimelineAgent::didInstallTimer(int timerId, int timeout, bool singleShot)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createTimerInstallData(m_frontend, timerId, timeout, singleShot));
- addRecordToTimeline(record, TimerInstallTimelineRecordType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createTimerInstallData(timerId, timeout, singleShot));
+ addRecordToTimeline(record.release(), TimerInstallTimelineRecordType);
}
void InspectorTimelineAgent::didRemoveTimer(int timerId)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createGenericTimerData(m_frontend, timerId));
- addRecordToTimeline(record, TimerRemoveTimelineRecordType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createGenericTimerData(timerId));
+ addRecordToTimeline(record.release(), TimerRemoveTimelineRecordType);
}
void InspectorTimelineAgent::willFireTimer(int timerId)
{
- pushCurrentRecord(TimelineRecordFactory::createGenericTimerData(m_frontend, timerId), TimerFireTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createGenericTimerData(timerId), TimerFireTimelineRecordType);
}
void InspectorTimelineAgent::didFireTimer()
@@ -174,7 +174,7 @@ void InspectorTimelineAgent::didFireTimer()
void InspectorTimelineAgent::willChangeXHRReadyState(const String& url, int readyState)
{
- pushCurrentRecord(TimelineRecordFactory::createXHRReadyStateChangeData(m_frontend, url, readyState), XHRReadyStateChangeRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createXHRReadyStateChangeData(url, readyState), XHRReadyStateChangeRecordType);
}
void InspectorTimelineAgent::didChangeXHRReadyState()
@@ -184,7 +184,7 @@ void InspectorTimelineAgent::didChangeXHRReadyState()
void InspectorTimelineAgent::willLoadXHR(const String& url)
{
- pushCurrentRecord(TimelineRecordFactory::createXHRLoadData(m_frontend, url), XHRLoadRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createXHRLoadData(url), XHRLoadRecordType);
}
void InspectorTimelineAgent::didLoadXHR()
@@ -194,7 +194,7 @@ void InspectorTimelineAgent::didLoadXHR()
void InspectorTimelineAgent::willEvaluateScript(const String& url, int lineNumber)
{
- pushCurrentRecord(TimelineRecordFactory::createEvaluateScriptData(m_frontend, url, lineNumber), EvaluateScriptTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createEvaluateScriptData(url, lineNumber), EvaluateScriptTimelineRecordType);
}
void InspectorTimelineAgent::didEvaluateScript()
@@ -205,26 +205,26 @@ void InspectorTimelineAgent::didEvaluateScript()
void InspectorTimelineAgent::didScheduleResourceRequest(const String& url)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createScheduleResourceRequestData(m_frontend, url));
- record.set("type", ScheduleResourceRequestTimelineRecordType);
- addRecordToTimeline(record, ScheduleResourceRequestTimelineRecordType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createScheduleResourceRequestData(url));
+ record->setNumber("type", ScheduleResourceRequestTimelineRecordType);
+ addRecordToTimeline(record.release(), ScheduleResourceRequestTimelineRecordType);
}
void InspectorTimelineAgent::willSendResourceRequest(unsigned long identifier, bool isMainResource,
const ResourceRequest& request)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createResourceSendRequestData(m_frontend, identifier, isMainResource, request));
- record.set("type", ResourceSendRequestTimelineRecordType);
- setHeapSizeStatistic(record);
- m_frontend->addRecordToTimeline(record);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createResourceSendRequestData(identifier, isMainResource, request));
+ record->setNumber("type", ResourceSendRequestTimelineRecordType);
+ setHeapSizeStatistic(record.get());
+ m_frontend->addRecordToTimeline(record.release());
}
void InspectorTimelineAgent::willReceiveResourceData(unsigned long identifier)
{
- pushCurrentRecord(TimelineRecordFactory::createReceiveResourceData(m_frontend, identifier), ReceiveResourceDataTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createReceiveResourceData(identifier), ReceiveResourceDataTimelineRecordType);
}
void InspectorTimelineAgent::didReceiveResourceData()
@@ -234,7 +234,7 @@ void InspectorTimelineAgent::didReceiveResourceData()
void InspectorTimelineAgent::willReceiveResourceResponse(unsigned long identifier, const ResourceResponse& response)
{
- pushCurrentRecord(TimelineRecordFactory::createResourceReceiveResponseData(m_frontend, identifier, response), ResourceReceiveResponseTimelineRecordType);
+ pushCurrentRecord(TimelineRecordFactory::createResourceReceiveResponseData(identifier, response), ResourceReceiveResponseTimelineRecordType);
}
void InspectorTimelineAgent::didReceiveResourceResponse()
@@ -245,33 +245,33 @@ void InspectorTimelineAgent::didReceiveResourceResponse()
void InspectorTimelineAgent::didFinishLoadingResource(unsigned long identifier, bool didFail)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createResourceFinishData(m_frontend, identifier, didFail));
- record.set("type", ResourceFinishTimelineRecordType);
- setHeapSizeStatistic(record);
- m_frontend->addRecordToTimeline(record);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createResourceFinishData(identifier, didFail));
+ record->setNumber("type", ResourceFinishTimelineRecordType);
+ setHeapSizeStatistic(record.get());
+ m_frontend->addRecordToTimeline(record.release());
}
void InspectorTimelineAgent::didMarkTimeline(const String& message)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- record.set("data", TimelineRecordFactory::createMarkTimelineData(m_frontend, message));
- addRecordToTimeline(record, MarkTimelineRecordType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ record->set("data", TimelineRecordFactory::createMarkTimelineData(message));
+ addRecordToTimeline(record.release(), MarkTimelineRecordType);
}
void InspectorTimelineAgent::didMarkDOMContentEvent()
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- addRecordToTimeline(record, MarkDOMContentEventType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ addRecordToTimeline(record.release(), MarkDOMContentEventType);
}
void InspectorTimelineAgent::didMarkLoadEvent()
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- addRecordToTimeline(record, MarkLoadEventType);
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ addRecordToTimeline(record.release(), MarkLoadEventType);
}
void InspectorTimelineAgent::reset()
@@ -279,32 +279,33 @@ void InspectorTimelineAgent::reset()
m_recordStack.clear();
}
-void InspectorTimelineAgent::resetFrontendProxyObject(InspectorFrontend* frontend)
+void InspectorTimelineAgent::resetFrontendProxyObject(InspectorFrontend2* frontend)
{
ASSERT(frontend);
reset();
m_frontend = frontend;
}
-void InspectorTimelineAgent::addRecordToTimeline(ScriptObject record, TimelineRecordType type)
+void InspectorTimelineAgent::addRecordToTimeline(PassRefPtr<InspectorObject> prpRecord, TimelineRecordType type)
{
- record.set("type", type);
- setHeapSizeStatistic(record);
+ RefPtr<InspectorObject> record(prpRecord);
+ record->setNumber("type", type);
+ setHeapSizeStatistic(record.get());
if (m_recordStack.isEmpty())
- m_frontend->addRecordToTimeline(record);
+ m_frontend->addRecordToTimeline(record.release());
else {
TimelineRecordEntry parent = m_recordStack.last();
- parent.children.set(parent.children.length(), record);
+ parent.children->push(record.release());
}
}
-void InspectorTimelineAgent::setHeapSizeStatistic(ScriptObject record)
+void InspectorTimelineAgent::setHeapSizeStatistic(InspectorObject* record)
{
size_t usedHeapSize = 0;
size_t totalHeapSize = 0;
ScriptGCEvent::getHeapSize(usedHeapSize, totalHeapSize);
- record.set("usedHeapSize", usedHeapSize);
- record.set("totalHeapSize", totalHeapSize);
+ record->setNumber("usedHeapSize", usedHeapSize);
+ record->setNumber("totalHeapSize", totalHeapSize);
}
void InspectorTimelineAgent::didCompleteCurrentRecord(TimelineRecordType type)
@@ -316,18 +317,18 @@ void InspectorTimelineAgent::didCompleteCurrentRecord(TimelineRecordType type)
TimelineRecordEntry entry = m_recordStack.last();
m_recordStack.removeLast();
ASSERT(entry.type == type);
- entry.record.set("data", entry.data);
- entry.record.set("children", entry.children);
- entry.record.set("endTime", WTF::currentTimeMS());
+ entry.record->set("data", entry.data);
+ entry.record->set("children", entry.children);
+ entry.record->setNumber("endTime", WTF::currentTimeMS());
addRecordToTimeline(entry.record, type);
}
}
-void InspectorTimelineAgent::pushCurrentRecord(ScriptObject data, TimelineRecordType type)
+void InspectorTimelineAgent::pushCurrentRecord(PassRefPtr<InspectorObject> data, TimelineRecordType type)
{
pushGCEventRecords();
- ScriptObject record = TimelineRecordFactory::createGenericRecord(m_frontend, WTF::currentTimeMS());
- m_recordStack.append(TimelineRecordEntry(record, data, m_frontend->newScriptArray(), type));
+ RefPtr<InspectorObject> record = TimelineRecordFactory::createGenericRecord(WTF::currentTimeMS());
+ m_recordStack.append(TimelineRecordEntry(record.release(), data, InspectorArray::create(), type));
}
} // namespace WebCore
diff --git a/WebCore/inspector/InspectorTimelineAgent.h b/WebCore/inspector/InspectorTimelineAgent.h
index fe334be..9a5cb98 100644
--- a/WebCore/inspector/InspectorTimelineAgent.h
+++ b/WebCore/inspector/InspectorTimelineAgent.h
@@ -34,16 +34,15 @@
#if ENABLE(INSPECTOR)
#include "Document.h"
+#include "InspectorValues.h"
#include "ScriptExecutionContext.h"
#include "ScriptGCEvent.h"
#include "ScriptGCEventListener.h"
-#include "ScriptObject.h"
-#include "ScriptArray.h"
#include <wtf/Vector.h>
namespace WebCore {
class Event;
-class InspectorFrontend;
+class InspectorFrontend2;
class IntRect;
class ResourceRequest;
class ResourceResponse;
@@ -75,11 +74,11 @@ enum TimelineRecordType {
class InspectorTimelineAgent : ScriptGCEventListener, public Noncopyable {
public:
- InspectorTimelineAgent(InspectorFrontend* frontend);
+ InspectorTimelineAgent(InspectorFrontend2* frontend);
~InspectorTimelineAgent();
void reset();
- void resetFrontendProxyObject(InspectorFrontend*);
+ void resetFrontendProxyObject(InspectorFrontend2*);
// Methods called from WebCore.
void willCallFunction(const String& scriptName, int scriptLine);
@@ -134,26 +133,26 @@ public:
private:
struct TimelineRecordEntry {
- TimelineRecordEntry(ScriptObject record, ScriptObject data, ScriptArray children, TimelineRecordType type)
+ TimelineRecordEntry(PassRefPtr<InspectorObject> record, PassRefPtr<InspectorObject> data, PassRefPtr<InspectorArray> children, TimelineRecordType type)
: record(record), data(data), children(children), type(type)
{
}
- ScriptObject record;
- ScriptObject data;
- ScriptArray children;
+ RefPtr<InspectorObject> record;
+ RefPtr<InspectorObject> data;
+ RefPtr<InspectorArray> children;
TimelineRecordType type;
};
- void pushCurrentRecord(ScriptObject, TimelineRecordType);
- void setHeapSizeStatistic(ScriptObject record);
+ void pushCurrentRecord(PassRefPtr<InspectorObject>, TimelineRecordType);
+ void setHeapSizeStatistic(InspectorObject* record);
void didCompleteCurrentRecord(TimelineRecordType);
- void addRecordToTimeline(ScriptObject, TimelineRecordType);
+ void addRecordToTimeline(PassRefPtr<InspectorObject>, TimelineRecordType);
void pushGCEventRecords();
- InspectorFrontend* m_frontend;
+ InspectorFrontend2* m_frontend;
Vector<TimelineRecordEntry> m_recordStack;
static int s_instanceCount;
diff --git a/WebCore/inspector/TimelineRecordFactory.cpp b/WebCore/inspector/TimelineRecordFactory.cpp
index bdb5f3d..8b4a97f 100644
--- a/WebCore/inspector/TimelineRecordFactory.cpp
+++ b/WebCore/inspector/TimelineRecordFactory.cpp
@@ -35,152 +35,152 @@
#include "Event.h"
#include "InspectorFrontend.h"
+#include "InspectorValues.h"
#include "IntRect.h"
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "ScriptArray.h"
#include "ScriptCallStack.h"
-#include "ScriptObject.h"
namespace WebCore {
-ScriptObject TimelineRecordFactory::createGenericRecord(InspectorFrontend* frontend, double startTime)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createGenericRecord(double startTime)
{
- ScriptObject record = frontend->newScriptObject();
- record.set("startTime", startTime);
+ RefPtr<InspectorObject> record = InspectorObject::create();
+ record->setNumber("startTime", startTime);
- ScriptArray stackTrace;
- if (ScriptCallStack::stackTrace(5, frontend->scriptState(), stackTrace))
- record.set("stackTrace", stackTrace);
- return record;
+ RefPtr<InspectorArray> stackTrace = InspectorArray::create();
+ if (ScriptCallStack::stackTrace(5, stackTrace))
+ record->set("stackTrace", stackTrace);
+ return record.release();
}
-ScriptObject TimelineRecordFactory::createGCEventData(InspectorFrontend* frontend, const size_t usedHeapSizeDelta)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createGCEventData(const size_t usedHeapSizeDelta)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("usedHeapSizeDelta", usedHeapSizeDelta);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("usedHeapSizeDelta", usedHeapSizeDelta);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createFunctionCallData(InspectorFrontend* frontend, const String& scriptName, int scriptLine)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createFunctionCallData(const String& scriptName, int scriptLine)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("scriptName", scriptName);
- data.set("scriptLine", scriptLine);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("scriptName", scriptName);
+ data->setNumber("scriptLine", scriptLine);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createEventDispatchData(InspectorFrontend* frontend, const Event& event)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createEventDispatchData(const Event& event)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("type", event.type().string());
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("type", event.type().string());
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createGenericTimerData(InspectorFrontend* frontend, int timerId)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createGenericTimerData(int timerId)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("timerId", timerId);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("timerId", timerId);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createTimerInstallData(InspectorFrontend* frontend, int timerId, int timeout, bool singleShot)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createTimerInstallData(int timerId, int timeout, bool singleShot)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("timerId", timerId);
- data.set("timeout", timeout);
- data.set("singleShot", singleShot);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("timerId", timerId);
+ data->setNumber("timeout", timeout);
+ data->setBool("singleShot", singleShot);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createXHRReadyStateChangeData(InspectorFrontend* frontend, const String& url, int readyState)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createXHRReadyStateChangeData(const String& url, int readyState)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("url", url);
- data.set("readyState", readyState);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("url", url);
+ data->setNumber("readyState", readyState);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createXHRLoadData(InspectorFrontend* frontend, const String& url)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createXHRLoadData(const String& url)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("url", url);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("url", url);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createEvaluateScriptData(InspectorFrontend* frontend, const String& url, double lineNumber)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createEvaluateScriptData(const String& url, double lineNumber)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("url", url);
- data.set("lineNumber", lineNumber);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("url", url);
+ data->setNumber("lineNumber", lineNumber);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createMarkTimelineData(InspectorFrontend* frontend, const String& message)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createMarkTimelineData(const String& message)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("message", message);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("message", message);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createScheduleResourceRequestData(InspectorFrontend* frontend, const String& url)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createScheduleResourceRequestData(const String& url)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("url", url);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setString("url", url);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createResourceSendRequestData(InspectorFrontend* frontend, unsigned long identifier, bool isMainResource, const ResourceRequest& request)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceSendRequestData(unsigned long identifier, bool isMainResource, const ResourceRequest& request)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("identifier", identifier);
- data.set("url", request.url().string());
- data.set("requestMethod", request.httpMethod());
- data.set("isMainResource", isMainResource);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("identifier", identifier);
+ data->setString("url", request.url().string());
+ data->setString("requestMethod", request.httpMethod());
+ data->setBool("isMainResource", isMainResource);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createResourceReceiveResponseData(InspectorFrontend* frontend, unsigned long identifier, const ResourceResponse& response)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceReceiveResponseData(unsigned long identifier, const ResourceResponse& response)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("identifier", identifier);
- data.set("statusCode", response.httpStatusCode());
- data.set("mimeType", response.mimeType());
- data.set("expectedContentLength", response.expectedContentLength());
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("identifier", identifier);
+ data->setNumber("statusCode", response.httpStatusCode());
+ data->setString("mimeType", response.mimeType());
+ data->setNumber("expectedContentLength", response.expectedContentLength());
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createResourceFinishData(InspectorFrontend* frontend, unsigned long identifier, bool didFail)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceFinishData(unsigned long identifier, bool didFail)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("identifier", identifier);
- data.set("didFail", didFail);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("identifier", identifier);
+ data->setBool("didFail", didFail);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createReceiveResourceData(InspectorFrontend* frontend, unsigned long identifier)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createReceiveResourceData(unsigned long identifier)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("identifier", identifier);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("identifier", identifier);
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createPaintData(InspectorFrontend* frontend, const IntRect& rect)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createPaintData(const IntRect& rect)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("x", rect.x());
- data.set("y", rect.y());
- data.set("width", rect.width());
- data.set("height", rect.height());
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("x", rect.x());
+ data->setNumber("y", rect.y());
+ data->setNumber("width", rect.width());
+ data->setNumber("height", rect.height());
+ return data.release();
}
-ScriptObject TimelineRecordFactory::createParseHTMLData(InspectorFrontend* frontend, unsigned int length, unsigned int startLine)
+PassRefPtr<InspectorObject> TimelineRecordFactory::createParseHTMLData(unsigned int length, unsigned int startLine)
{
- ScriptObject data = frontend->newScriptObject();
- data.set("length", length);
- data.set("startLine", startLine);
- return data;
+ RefPtr<InspectorObject> data = InspectorObject::create();
+ data->setNumber("length", length);
+ data->setNumber("startLine", startLine);
+ return data.release();
}
} // namespace WebCore
diff --git a/WebCore/inspector/TimelineRecordFactory.h b/WebCore/inspector/TimelineRecordFactory.h
index f905ecc..52dda25 100644
--- a/WebCore/inspector/TimelineRecordFactory.h
+++ b/WebCore/inspector/TimelineRecordFactory.h
@@ -37,47 +37,47 @@ namespace WebCore {
class Event;
class InspectorFrontend;
+ class InspectorObject;
class IntRect;
class ResourceRequest;
class ResourceResponse;
- class ScriptObject;
class TimelineRecordFactory {
public:
- static ScriptObject createGenericRecord(InspectorFrontend*, double startTime);
+ static PassRefPtr<InspectorObject> createGenericRecord(double startTime);
- static ScriptObject createGCEventData(InspectorFrontend* frontend, const size_t usedHeapSizeDelta);
+ static PassRefPtr<InspectorObject> createGCEventData(const size_t usedHeapSizeDelta);
- static ScriptObject createFunctionCallData(InspectorFrontend*, const String& scriptName, int scriptLine);
+ static PassRefPtr<InspectorObject> createFunctionCallData(const String& scriptName, int scriptLine);
- static ScriptObject createEventDispatchData(InspectorFrontend*, const Event&);
+ static PassRefPtr<InspectorObject> createEventDispatchData(const Event&);
- static ScriptObject createGenericTimerData(InspectorFrontend*, int timerId);
+ static PassRefPtr<InspectorObject> createGenericTimerData(int timerId);
- static ScriptObject createTimerInstallData(InspectorFrontend*, int timerId, int timeout, bool singleShot);
+ static PassRefPtr<InspectorObject> createTimerInstallData(int timerId, int timeout, bool singleShot);
- static ScriptObject createXHRReadyStateChangeData(InspectorFrontend*, const String& url, int readyState);
+ static PassRefPtr<InspectorObject> createXHRReadyStateChangeData(const String& url, int readyState);
- static ScriptObject createXHRLoadData(InspectorFrontend*, const String& url);
+ static PassRefPtr<InspectorObject> createXHRLoadData(const String& url);
- static ScriptObject createEvaluateScriptData(InspectorFrontend*, const String&, double lineNumber);
+ static PassRefPtr<InspectorObject> createEvaluateScriptData(const String&, double lineNumber);
- static ScriptObject createMarkTimelineData(InspectorFrontend*, const String&);
+ static PassRefPtr<InspectorObject> createMarkTimelineData(const String&);
- static ScriptObject createResourceSendRequestData(InspectorFrontend*, unsigned long identifier,
+ static PassRefPtr<InspectorObject> createResourceSendRequestData(unsigned long identifier,
bool isMainResource, const ResourceRequest&);
- static ScriptObject createScheduleResourceRequestData(InspectorFrontend*, const String&);
+ static PassRefPtr<InspectorObject> createScheduleResourceRequestData(const String&);
- static ScriptObject createResourceReceiveResponseData(InspectorFrontend*, unsigned long identifier, const ResourceResponse&);
+ static PassRefPtr<InspectorObject> createResourceReceiveResponseData(unsigned long identifier, const ResourceResponse&);
- static ScriptObject createReceiveResourceData(InspectorFrontend*, unsigned long identifier);
+ static PassRefPtr<InspectorObject> createReceiveResourceData(unsigned long identifier);
- static ScriptObject createResourceFinishData(InspectorFrontend*, unsigned long identifier, bool didFail);
+ static PassRefPtr<InspectorObject> createResourceFinishData(unsigned long identifier, bool didFail);
- static ScriptObject createPaintData(InspectorFrontend*, const IntRect&);
+ static PassRefPtr<InspectorObject> createPaintData(const IntRect&);
- static ScriptObject createParseHTMLData(InspectorFrontend*, unsigned int length, unsigned int startLine);
+ static PassRefPtr<InspectorObject> createParseHTMLData(unsigned int length, unsigned int startLine);
private:
TimelineRecordFactory() { }
diff --git a/WebCore/inspector/front-end/AbstractTimelinePanel.js b/WebCore/inspector/front-end/AbstractTimelinePanel.js
index eb9ea88..1b5f6ce 100644
--- a/WebCore/inspector/front-end/AbstractTimelinePanel.js
+++ b/WebCore/inspector/front-end/AbstractTimelinePanel.js
@@ -28,9 +28,9 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-WebInspector.AbstractTimelinePanel = function()
+WebInspector.AbstractTimelinePanel = function(name)
{
- WebInspector.Panel.call(this);
+ WebInspector.Panel.call(this, name);
this._items = [];
this._staleItems = [];
}
diff --git a/WebCore/inspector/front-end/ApplicationCacheItemsView.js b/WebCore/inspector/front-end/ApplicationCacheItemsView.js
new file mode 100644
index 0000000..029f83b
--- /dev/null
+++ b/WebCore/inspector/front-end/ApplicationCacheItemsView.js
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.ApplicationCacheItemsView = function(treeElement, appcacheDomain)
+{
+ WebInspector.View.call(this);
+
+ this.element.addStyleClass("storage-view");
+ this.element.addStyleClass("table");
+
+ // FIXME: Delete Button semantics are not yet defined.
+ // FIXME: Needs better tooltip. (Localized)
+ 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);
+
+ // FIXME: Refresh Button semantics are not yet defined.
+ // FIXME: Needs better tooltip. (Localized)
+ this.refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString("Refresh"), "refresh-storage-status-bar-item");
+ this.refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this), false);
+
+ this.connectivityIcon = document.createElement("img");
+ this.connectivityIcon.className = "storage-application-cache-connectivity-icon";
+ this.connectivityIcon.src = "";
+ this.connectivityMessage = document.createElement("span");
+ this.connectivityMessage.className = "storage-application-cache-connectivity";
+ this.connectivityMessage.textContent = "";
+
+ this.divider = document.createElement("span");
+ this.divider.className = "status-bar-item status-bar-divider";
+
+ this.statusIcon = document.createElement("img");
+ this.statusIcon.className = "storage-application-cache-status-icon";
+ this.statusIcon.src = "";
+ this.statusMessage = document.createElement("span");
+ this.statusMessage.className = "storage-application-cache-status";
+ this.statusMessage.textContent = "";
+
+ this._treeElement = treeElement;
+ this._appcacheDomain = appcacheDomain;
+
+ this._emptyMsgElement = document.createElement("div");
+ this._emptyMsgElement.className = "storage-table-empty";
+ this._emptyMsgElement.textContent = WebInspector.UIString("No Application Cache information available.");
+ this.element.appendChild(this._emptyMsgElement);
+
+ this.updateStatus(applicationCache.UNCACHED);
+}
+
+WebInspector.ApplicationCacheItemsView.prototype = {
+ get statusBarItems()
+ {
+ return [
+ this.refreshButton.element, this.deleteButton.element,
+ this.connectivityIcon, this.connectivityMessage, this.divider,
+ this.statusIcon, this.statusMessage
+ ];
+ },
+
+ show: function(parentElement)
+ {
+ WebInspector.View.prototype.show.call(this, parentElement);
+ this.updateNetworkState(navigator.onLine);
+ this._update();
+ },
+
+ hide: function()
+ {
+ WebInspector.View.prototype.hide.call(this);
+ this.deleteButton.visible = false;
+ },
+
+ updateStatus: function(status)
+ {
+ var statusInformation = {};
+ statusInformation[applicationCache.UNCACHED] = { src: "Images/warningOrangeDot.png", text: "UNCACHED" };
+ statusInformation[applicationCache.IDLE] = { src: "Images/warningOrangeDot.png", text: "IDLE" };
+ statusInformation[applicationCache.CHECKING] = { src: "Images/successGreenDot.png", text: "CHECKING" };
+ statusInformation[applicationCache.DOWNLOADING] = { src: "Images/successGreenDot.png", text: "DOWNLOADING" };
+ statusInformation[applicationCache.UPDATEREADY] = { src: "Images/successGreenDot.png", text: "UPDATEREADY" };
+ statusInformation[applicationCache.OBSOLETE] = { src: "Images/errorRedDot.png", text: "OBSOLETE" };
+
+ var info = statusInformation[status];
+ if (!info) {
+ console.error("Unknown Application Cache Status was Not Handled: %d", status);
+ return;
+ }
+
+ this.statusIcon.src = info.src;
+ this.statusMessage.textContent = info.text;
+ },
+
+ updateNetworkState: function(isNowOnline)
+ {
+ if (isNowOnline) {
+ this.connectivityIcon.src = "Images/successGreenDot.png";
+ this.connectivityMessage.textContent = WebInspector.UIString("Online");
+ } else {
+ this.connectivityIcon.src = "Images/errorRedDot.png";
+ this.connectivityMessage.textContent = WebInspector.UIString("Offline");
+ }
+ },
+
+ _update: function()
+ {
+ WebInspector.ApplicationCache.getApplicationCachesAsync(this._updateCallback.bind(this));
+ },
+
+ _updateCallback: function(applicationCaches)
+ {
+ // FIXME: applicationCaches is just one cache.
+ // FIXME: are these variables needed anywhere else?
+ this._manifest = applicationCaches.manifest;
+ this._creationTime = applicationCaches.creationTime;
+ this._updateTime = applicationCaches.updateTime;
+ this._size = applicationCaches.size;
+ this._resources = applicationCaches.resources;
+ var lastPathComponent = applicationCaches.lastPathComponent;
+
+ if (!this._manifest) {
+ this._emptyMsgElement.removeStyleClass("hidden");
+ this.deleteButton.visible = false;
+ if (this._dataGrid)
+ this._dataGrid.element.addStyleClass("hidden");
+ return;
+ }
+
+ if (!this._dataGrid)
+ this._createDataGrid();
+
+ this._populateDataGrid();
+ this._dataGrid.autoSizeColumns(20, 80);
+ this._dataGrid.element.removeStyleClass("hidden");
+ this._emptyMsgElement.addStyleClass("hidden");
+ this.deleteButton.visible = true;
+
+ var totalSizeString = Number.bytesToString(this._size, WebInspector.UIString);
+ this._treeElement.subtitle = WebInspector.UIString("%s (%s)", lastPathComponent, totalSizeString);
+
+ // FIXME: For Chrome, put creationTime and updateTime somewhere.
+ // NOTE: localizedString has not yet been added.
+ // WebInspector.UIString("(%s) Created: %s Updated: %s", this._size, this._creationTime, this._updateTime);
+ },
+
+ _createDataGrid: function()
+ {
+ var columns = { 0: {}, 1: {}, 2: {} };
+ columns[0].title = WebInspector.UIString("Resource");
+ columns[0].sort = "ascending";
+ columns[0].sortable = true;
+ columns[1].title = WebInspector.UIString("Type");
+ columns[1].sortable = true;
+ columns[2].title = WebInspector.UIString("Size");
+ columns[2].aligned = "right";
+ columns[2].sortable = true;
+ this._dataGrid = new WebInspector.DataGrid(columns);
+ this.element.appendChild(this._dataGrid.element);
+ this._dataGrid.addEventListener("sorting changed", this._populateDataGrid, this);
+ this._dataGrid.updateWidths();
+ },
+
+ _populateDataGrid: function()
+ {
+ var selectedResource = this._dataGrid.selectedNode ? this._dataGrid.selectedNode.resource : null;
+ var sortDirection = this._dataGrid.sortOrder === "ascending" ? 1 : -1;
+
+ function numberCompare(field, resource1, resource2)
+ {
+ return sortDirection * (resource1[field] - resource2[field]);
+ }
+ function localeCompare(field, resource1, resource2)
+ {
+ return sortDirection * (resource1[field] + "").localeCompare(resource2[field] + "")
+ }
+
+ var comparator;
+ switch (parseInt(this._dataGrid.sortColumnIdentifier)) {
+ case 0: comparator = localeCompare.bind(this, "name"); break;
+ case 1: comparator = localeCompare.bind(this, "type"); break;
+ case 2: comparator = numberCompare.bind(this, "size"); break;
+ default: localeCompare.bind(this, "resource"); // FIXME: comparator = ?
+ }
+
+ this._resources.sort(comparator);
+ this._dataGrid.removeChildren();
+
+ var nodeToSelect;
+ for (var i = 0; i < this._resources.length; ++i) {
+ var data = {};
+ var resource = this._resources[i];
+ data[0] = resource.name;
+ data[1] = resource.type;
+ data[2] = Number.bytesToString(resource.size, WebInspector.UIString);
+ var node = new WebInspector.DataGridNode(data);
+ node.resource = resource;
+ node.selectable = true;
+ this._dataGrid.appendChild(node);
+ if (resource === selectedResource) {
+ nodeToSelect = node;
+ nodeToSelect.selected = true;
+ }
+ }
+
+ if (!nodeToSelect)
+ this._dataGrid.children[0].selected = true;
+ },
+
+ resize: function()
+ {
+ if (this._dataGrid)
+ this._dataGrid.updateWidths();
+ },
+
+ _deleteButtonClicked: function(event)
+ {
+ if (!this._dataGrid || !this._dataGrid.selectedNode)
+ return;
+
+ // FIXME: Delete Button semantics are not yet defined. (Delete a single, or all?)
+ this._deleteCallback(this._dataGrid.selectedNode);
+ },
+
+ _deleteCallback: function(node)
+ {
+ // FIXME: Should we delete a single (selected) resource or all resources?
+ // InspectorBackend.deleteCachedResource(...)
+ // this._update();
+ },
+
+ _refreshButtonClicked: function(event)
+ {
+ // FIXME: Is this a refresh button or a re-fetch manifest button?
+ // this._update();
+ }
+}
+
+WebInspector.ApplicationCacheItemsView.prototype.__proto__ = WebInspector.View.prototype;
diff --git a/WebCore/inspector/front-end/AuditsPanel.js b/WebCore/inspector/front-end/AuditsPanel.js
index 481df80..bc7f3b3 100644
--- a/WebCore/inspector/front-end/AuditsPanel.js
+++ b/WebCore/inspector/front-end/AuditsPanel.js
@@ -30,7 +30,7 @@
WebInspector.AuditsPanel = function()
{
- WebInspector.Panel.call(this);
+ WebInspector.Panel.call(this, "audits");
this._constructCategories();
@@ -47,8 +47,6 @@ WebInspector.AuditsPanel = function()
this.sidebarTree.appendChild(this.auditResultsTreeElement);
this.auditResultsTreeElement.expand();
- this.element.addStyleClass("audits");
-
this.clearResultsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear audit results."), "clear-status-bar-item");
this.clearResultsButton.addEventListener("click", this._clearButtonClicked.bind(this), false);
@@ -60,8 +58,6 @@ WebInspector.AuditsPanel = function()
}
WebInspector.AuditsPanel.prototype = {
- toolbarItemClass: "audits",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Audits");
diff --git a/WebCore/inspector/front-end/CallStackSidebarPane.js b/WebCore/inspector/front-end/CallStackSidebarPane.js
index fc96d74..60eee34 100644
--- a/WebCore/inspector/front-end/CallStackSidebarPane.js
+++ b/WebCore/inspector/front-end/CallStackSidebarPane.js
@@ -61,7 +61,10 @@ WebInspector.CallStackSidebarPane.prototype = {
}
scriptOrResource = sourceIDMap[callFrame.sourceID];
- subtitle = WebInspector.displayNameForURL(scriptOrResource.sourceURL || scriptOrResource.url);
+ if (scriptOrResource)
+ subtitle = WebInspector.displayNameForURL(scriptOrResource.sourceURL || scriptOrResource.url);
+ else
+ subtitle = WebInspector.UIString("(internal script)");
if (callFrame.line > 0) {
if (subtitle)
diff --git a/WebCore/inspector/front-end/ConsolePanel.js b/WebCore/inspector/front-end/ConsolePanel.js
index 6dbc558..5a0c2e7 100644
--- a/WebCore/inspector/front-end/ConsolePanel.js
+++ b/WebCore/inspector/front-end/ConsolePanel.js
@@ -28,12 +28,10 @@
WebInspector.ConsolePanel = function()
{
- WebInspector.Panel.call(this);
+ WebInspector.Panel.call(this, "console");
}
WebInspector.ConsolePanel.prototype = {
- toolbarItemClass: "console",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Console");
diff --git a/WebCore/inspector/front-end/DOMAgent.js b/WebCore/inspector/front-end/DOMAgent.js
index ee85d1c..07b16b1 100644
--- a/WebCore/inspector/front-end/DOMAgent.js
+++ b/WebCore/inspector/front-end/DOMAgent.js
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
* Copyright (C) 2009 Joseph Pecoraro
*
* Redistribution and use in source and binary forms, with or without
@@ -86,7 +86,8 @@ WebInspector.DOMNode.prototype = {
return this.attributes.length > 0;
},
- hasChildNodes: function() {
+ hasChildNodes: function()
+ {
return this._childNodeCount > 0;
},
@@ -350,7 +351,8 @@ WebInspector.DOMAgent.prototype = {
this.document._fireDomEvent("DOMAttrModified", event);
},
- nodeForId: function(nodeId) {
+ nodeForId: function(nodeId)
+ {
return this._idToDOMNode[nodeId];
},
@@ -420,16 +422,33 @@ WebInspector.DOMAgent.prototype = {
}
}
+WebInspector.ApplicationCache = {}
+
+WebInspector.ApplicationCache.getApplicationCachesAsync = function(callback)
+{
+ function mycallback(applicationCaches)
+ {
+ // FIXME: Currently, this list only returns a single application cache.
+ if (applicationCaches)
+ callback(applicationCaches);
+ }
+
+ var callId = WebInspector.Callback.wrap(mycallback);
+ InspectorBackend.getApplicationCaches(callId);
+}
+
WebInspector.Cookies = {}
WebInspector.Cookies.getCookiesAsync = function(callback)
{
- function mycallback(cookies, cookiesString) {
+ function mycallback(cookies, cookiesString)
+ {
if (cookiesString)
callback(WebInspector.Cookies.buildCookiesFromString(cookiesString), false);
else
callback(cookies, true);
}
+
var callId = WebInspector.Callback.wrap(mycallback);
InspectorBackend.getCookies(callId);
}
@@ -543,6 +562,7 @@ WebInspector.CSSStyleDeclaration.parseRule = function(payload)
rule.isUser = payload.isUser;
rule.isViaInspector = payload.isViaInspector;
rule.sourceLine = payload.sourceLine;
+ rule.documentURL = payload.documentURL;
if (payload.parentStyleSheet)
rule.parentStyleSheet = { href: payload.parentStyleSheet.href };
@@ -661,6 +681,7 @@ WebInspector.childNodeRemoved = function()
this.domAgent._childNodeRemoved.apply(this.domAgent, arguments);
}
+WebInspector.didGetApplicationCaches = WebInspector.Callback.processCallback;
WebInspector.didGetCookies = WebInspector.Callback.processCallback;
WebInspector.didGetChildNodes = WebInspector.Callback.processCallback;
WebInspector.didPerformSearch = WebInspector.Callback.processCallback;
diff --git a/WebCore/inspector/front-end/ElementsPanel.js b/WebCore/inspector/front-end/ElementsPanel.js
index e176112..cd7cbd2 100644
--- a/WebCore/inspector/front-end/ElementsPanel.js
+++ b/WebCore/inspector/front-end/ElementsPanel.js
@@ -30,9 +30,7 @@
WebInspector.ElementsPanel = function()
{
- WebInspector.Panel.call(this);
-
- this.element.addStyleClass("elements");
+ WebInspector.Panel.call(this, "elements");
this.contentElement = document.createElement("div");
this.contentElement.id = "elements-content";
@@ -114,8 +112,6 @@ WebInspector.ElementsPanel = function()
}
WebInspector.ElementsPanel.prototype = {
- toolbarItemClass: "elements",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Elements");
@@ -1121,20 +1117,23 @@ WebInspector.ElementsPanel.prototype = {
rightSidebarResizerDragEnd: function(event)
{
WebInspector.elementDragEnd(event);
+ this.saveSidebarWidth();
},
rightSidebarResizerDrag: function(event)
{
var x = event.pageX;
var newWidth = Number.constrain(window.innerWidth - x, Preferences.minElementsSidebarWidth, window.innerWidth * 0.66);
+ this.setSidebarWidth(newWidth);
+ event.preventDefault();
+ },
+ setSidebarWidth: function(newWidth)
+ {
this.sidebarElement.style.width = newWidth + "px";
this.contentElement.style.right = newWidth + "px";
this.sidebarResizeElement.style.right = (newWidth - 3) + "px";
-
this.treeOutline.updateSelection();
-
- event.preventDefault();
},
_nodeSearchButtonClicked: function(event)
diff --git a/WebCore/inspector/front-end/Images/applicationCache.png b/WebCore/inspector/front-end/Images/applicationCache.png
new file mode 100644
index 0000000..50bad87
--- /dev/null
+++ b/WebCore/inspector/front-end/Images/applicationCache.png
Binary files differ
diff --git a/WebCore/inspector/front-end/Panel.js b/WebCore/inspector/front-end/Panel.js
index 9fd0a60..2fa0d34 100644
--- a/WebCore/inspector/front-end/Panel.js
+++ b/WebCore/inspector/front-end/Panel.js
@@ -26,11 +26,15 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-WebInspector.Panel = function()
+WebInspector.Panel = function(name)
{
WebInspector.View.call(this);
this.element.addStyleClass("panel");
+ this.element.addStyleClass(name);
+ this._panelName = name;
+
+ WebInspector.applicationSettings.installSetting(this._sidebarWidthSettingName(), this._panelName + "-sidebar-width", undefined);
}
// Should by in sync with style declarations.
@@ -52,8 +56,7 @@ WebInspector.Panel.prototype = {
this._toolbarItem.className = "toolbar-item toggleable";
this._toolbarItem.panel = this;
- if ("toolbarItemClass" in this)
- this._toolbarItem.addStyleClass(this.toolbarItemClass);
+ this._toolbarItem.addStyleClass(this._panelName);
var iconElement = document.createElement("div");
iconElement.className = "toolbar-icon";
@@ -86,7 +89,7 @@ WebInspector.Panel.prototype = {
WebInspector.currentFocusElement = this.defaultFocusedElement;
- this.updateSidebarWidth();
+ this.restoreSidebarWidth();
this._restoreScrollPositions();
},
@@ -291,7 +294,7 @@ WebInspector.Panel.prototype = {
createSidebar: function(parentElement, resizerParentElement)
{
- if (this.hasSidebar)
+ if (this.sidebarElement)
return;
if (!parentElement)
@@ -300,8 +303,6 @@ WebInspector.Panel.prototype = {
if (!resizerParentElement)
resizerParentElement = parentElement;
- this.hasSidebar = true;
-
this.sidebarElement = document.createElement("div");
this.sidebarElement.className = "sidebar";
parentElement.appendChild(this.sidebarElement);
@@ -319,6 +320,11 @@ WebInspector.Panel.prototype = {
this.sidebarTree.panel = this;
},
+ _sidebarWidthSettingName: function()
+ {
+ return this._panelName + "SidebarWidth";
+ },
+
_startSidebarDragging: function(event)
{
WebInspector.elementDragStart(this.sidebarResizeElement, this._sidebarDragging.bind(this), this._endSidebarDragging.bind(this), event, "col-resize");
@@ -334,11 +340,12 @@ WebInspector.Panel.prototype = {
_endSidebarDragging: function(event)
{
WebInspector.elementDragEnd(event);
+ this.saveSidebarWidth();
},
updateSidebarWidth: function(width)
{
- if (!this.hasSidebar)
+ if (!this.sidebarElement)
return;
if (this.sidebarElement.offsetWidth <= 0) {
@@ -367,6 +374,19 @@ WebInspector.Panel.prototype = {
this.sidebarResizeElement.style.left = (width - 3) + "px";
},
+ restoreSidebarWidth: function()
+ {
+ var sidebarWidth = WebInspector.applicationSettings[this._sidebarWidthSettingName()];
+ this.updateSidebarWidth(sidebarWidth);
+ },
+
+ saveSidebarWidth: function()
+ {
+ if (!this.sidebarElement)
+ return;
+ WebInspector.applicationSettings[this._sidebarWidthSettingName()] = this.sidebarElement.offsetWidth;
+ },
+
updateMainViewWidth: function(width)
{
// Should be implemented by ancestors.
diff --git a/WebCore/inspector/front-end/ProfilesPanel.js b/WebCore/inspector/front-end/ProfilesPanel.js
index b5122af..911b1da 100644
--- a/WebCore/inspector/front-end/ProfilesPanel.js
+++ b/WebCore/inspector/front-end/ProfilesPanel.js
@@ -90,11 +90,10 @@ WebInspector.ProfileType.prototype = {
WebInspector.ProfilesPanel = function()
{
- WebInspector.Panel.call(this);
+ WebInspector.Panel.call(this, "profiles");
this.createSidebar();
- this.element.addStyleClass("profiles");
this._profileTypesByIdMap = {};
this._profileTypeButtonsByIdMap = {};
@@ -128,8 +127,6 @@ WebInspector.ProfilesPanel = function()
}
WebInspector.ProfilesPanel.prototype = {
- toolbarItemClass: "profiles",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Profiles");
diff --git a/WebCore/inspector/front-end/ResourcesPanel.js b/WebCore/inspector/front-end/ResourcesPanel.js
index ef6aa26..8af1505 100644
--- a/WebCore/inspector/front-end/ResourcesPanel.js
+++ b/WebCore/inspector/front-end/ResourcesPanel.js
@@ -29,9 +29,7 @@
WebInspector.ResourcesPanel = function()
{
- WebInspector.AbstractTimelinePanel.call(this);
-
- this.element.addStyleClass("resources");
+ WebInspector.AbstractTimelinePanel.call(this, "resources");
this._createPanelEnabler();
@@ -43,6 +41,7 @@ WebInspector.ResourcesPanel = function()
this.createInterface();
this._createStatusbarButtons();
+ this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this), true);
this.reset();
this.filter(this.filterAllElement, false);
@@ -51,8 +50,6 @@ WebInspector.ResourcesPanel = function()
}
WebInspector.ResourcesPanel.prototype = {
- toolbarItemClass: "resources",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Resources");
@@ -319,6 +316,7 @@ WebInspector.ResourcesPanel.prototype = {
{
this._resourceTrackingEnabled = true;
this.reset();
+ this.restoreSidebarWidth();
},
resourceTrackingWasDisabled: function()
@@ -329,6 +327,7 @@ WebInspector.ResourcesPanel.prototype = {
reset: function()
{
+ this._popoverHelper.hidePopup();
this.closeVisibleResource();
delete this.currentQuery;
@@ -477,6 +476,8 @@ WebInspector.ResourcesPanel.prototype = {
if (!resource)
return;
+ this._popoverHelper.hidePopup();
+
this.containerElement.addStyleClass("viewing-resource");
if (this.visibleResource && this.visibleResource._resourcesView)
@@ -735,6 +736,52 @@ WebInspector.ResourcesPanel.prototype = {
elementsToRestoreScrollPositionsFor: function()
{
return [ this.containerElement ];
+ },
+
+ _getPopoverAnchor: function(element)
+ {
+ var anchor = element.enclosingNodeOrSelfWithClass("resources-graph-bar") || element.enclosingNodeOrSelfWithClass("resources-graph-label");
+ if (!anchor)
+ return null;
+ var resource = anchor.parentElement.resource;
+ return resource && resource.timing ? anchor : null;
+ },
+
+ _showPopover: function(anchor)
+ {
+ var tableElement = document.createElement("table");
+ var resource = anchor.parentElement.resource;
+ var data = [WebInspector.UIString("Blocking"), resource.timing.requestTime === 0 ? "?" : Number.secondsToString(Math.max(resource.timing.requestTime - resource.startTime, 0)),
+ WebInspector.UIString("Proxy"), resource.timing.proxyDuration == -1 ? WebInspector.UIString("(none)") : Number.secondsToString(resource.timing.proxyDuration),
+ WebInspector.UIString("DNS Lookup"), resource.timing.dnsDuration == -1 ? WebInspector.UIString("(reused)") : Number.secondsToString(resource.timing.dnsDuration),
+ WebInspector.UIString("Connecting"), resource.timing.connectDuration == -1 ? WebInspector.UIString("(reused)") : Number.secondsToString(resource.timing.connectDuration),
+ WebInspector.UIString("Sending"), Number.secondsToString(resource.timing.sendDuration),
+ WebInspector.UIString("Waiting"), Number.secondsToString(resource.timing.waitDuration),
+ WebInspector.UIString("Receiving"), Number.secondsToString(resource.endTime - resource.responseReceivedTime)];
+
+ for (var i = 0; i < data.length; i += 2) {
+ var tr = document.createElement("tr");
+ tableElement.appendChild(tr);
+
+ var td = document.createElement("td");
+ td.textContent = data[i];
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.align = "right";
+ td.textContent = data[i + 1];
+ tr.appendChild(td);
+ }
+
+ var popover = new WebInspector.Popover(tableElement);
+ popover.show(anchor);
+ return popover;
+ },
+
+ hide: function()
+ {
+ WebInspector.Panel.prototype.hide.call(this);
+ this._popoverHelper.hidePopup();
}
}
@@ -858,6 +905,9 @@ WebInspector.ResourceTimeCalculator.prototype = {
else
var leftLabel = rightLabel;
+ if (resource.timing)
+ return {left: leftLabel, right: rightLabel};
+
if (hasLatency && rightLabel) {
var total = this.formatValue(resource.duration);
var tooltip = WebInspector.UIString("%s latency, %s download (%s total)", leftLabel, rightLabel, total);
@@ -868,7 +918,6 @@ WebInspector.ResourceTimeCalculator.prototype = {
if (resource.cached)
tooltip = WebInspector.UIString("%s (from cache)", tooltip);
-
return {left: leftLabel, right: rightLabel, tooltip: tooltip};
},
@@ -1208,6 +1257,7 @@ WebInspector.ResourceGraph = function(resource)
this._barAreaElement = document.createElement("div");
this._barAreaElement.className = "resources-graph-bar-area hidden";
+ this._barAreaElement.resource = resource;
this._graphElement.appendChild(this._barAreaElement);
this._barLeftElement = document.createElement("div");
diff --git a/WebCore/inspector/front-end/ScriptsPanel.js b/WebCore/inspector/front-end/ScriptsPanel.js
index 5563b93..3c4a0be 100644
--- a/WebCore/inspector/front-end/ScriptsPanel.js
+++ b/WebCore/inspector/front-end/ScriptsPanel.js
@@ -25,9 +25,7 @@
WebInspector.ScriptsPanel = function()
{
- WebInspector.Panel.call(this);
-
- this.element.addStyleClass("scripts");
+ WebInspector.Panel.call(this, "scripts");
this.topStatusBar = document.createElement("div");
this.topStatusBar.className = "status-bar";
@@ -184,8 +182,6 @@ WebInspector.ScriptsPanel.PauseOnExceptionsState = {
};
WebInspector.ScriptsPanel.prototype = {
- toolbarItemClass: "scripts",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Scripts");
@@ -794,15 +790,20 @@ WebInspector.ScriptsPanel.prototype = {
_endSidebarResizeDrag: function(event)
{
WebInspector.elementDragEnd(event);
-
delete this._dragOffset;
+ this.saveSidebarWidth();
},
_sidebarResizeDrag: function(event)
{
var x = event.pageX + this._dragOffset;
var newWidth = Number.constrain(window.innerWidth - x, Preferences.minScriptsSidebarWidth, window.innerWidth * 0.66);
+ this.setSidebarWidth(newWidth);
+ event.preventDefault();
+ },
+ setSidebarWidth: function(newWidth)
+ {
this.sidebarElement.style.width = newWidth + "px";
this.sidebarButtonsElement.style.width = newWidth + "px";
this.viewsContainerElement.style.right = newWidth + "px";
@@ -810,7 +811,6 @@ WebInspector.ScriptsPanel.prototype = {
this.sidebarResizeElement.style.right = (newWidth - 3) + "px";
this.resize();
- event.preventDefault();
},
updatePauseOnExceptionsState: function(pauseOnExceptionsState)
diff --git a/WebCore/inspector/front-end/Settings.js b/WebCore/inspector/front-end/Settings.js
index c7fc5a9..11f456c 100644
--- a/WebCore/inspector/front-end/Settings.js
+++ b/WebCore/inspector/front-end/Settings.js
@@ -48,15 +48,16 @@ var Preferences = {
WebInspector.populateApplicationSettings = function(settingsString)
{
WebInspector.applicationSettings._load(settingsString);
- WebInspector.applicationSettings._installSetting("eventListenersFilter", "event-listeners-filter", "all");
- WebInspector.applicationSettings._installSetting("colorFormat", "color-format", "hex");
- WebInspector.applicationSettings._installSetting("resourcesLargeRows", "resources-large-rows", true);
- WebInspector.applicationSettings._installSetting("watchExpressions", "watch-expressions", []);
- WebInspector.applicationSettings._installSetting("lastViewedScriptFile", "last-viewed-script-file");
- WebInspector.applicationSettings._installSetting("showInheritedComputedStyleProperties", "show-inherited-computed-style-properties", false);
- WebInspector.applicationSettings._installSetting("showUserAgentStyles", "show-user-agent-styles", true);
- WebInspector.applicationSettings._installSetting("resourceViewTab", "resource-view-tab", "content");
- WebInspector.applicationSettings._installSetting("consoleHistory", "console-history", []);
+ WebInspector.applicationSettings.installSetting("eventListenersFilter", "event-listeners-filter", "all");
+ WebInspector.applicationSettings.installSetting("colorFormat", "color-format", "hex");
+ WebInspector.applicationSettings.installSetting("resourcesLargeRows", "resources-large-rows", true);
+ WebInspector.applicationSettings.installSetting("watchExpressions", "watch-expressions", []);
+ WebInspector.applicationSettings.installSetting("lastViewedScriptFile", "last-viewed-script-file");
+ WebInspector.applicationSettings.installSetting("showInheritedComputedStyleProperties", "show-inherited-computed-style-properties", false);
+ WebInspector.applicationSettings.installSetting("showUserAgentStyles", "show-user-agent-styles", true);
+ WebInspector.applicationSettings.installSetting("resourceViewTab", "resource-view-tab", "content");
+ WebInspector.applicationSettings.installSetting("consoleHistory", "console-history", []);
+
WebInspector.applicationSettings.dispatchEventToListeners("loaded");
}
@@ -69,6 +70,7 @@ WebInspector.populateSessionSettings = function(settingsString)
WebInspector.Settings = function(sessionScope)
{
this._sessionScope = sessionScope;
+ this._defaultValues = {};
}
WebInspector.Settings.prototype = {
@@ -88,18 +90,18 @@ WebInspector.Settings.prototype = {
}
},
- _installSetting: function(name, propertyName, defaultValue)
+ installSetting: function(name, propertyName, defaultValue)
{
this.__defineGetter__(name, this._get.bind(this, propertyName));
this.__defineSetter__(name, this._set.bind(this, propertyName));
- if (!(propertyName in this._store)) {
- this._store[propertyName] = defaultValue;
- }
+ this._defaultValues[propertyName] = defaultValue;
},
_get: function(propertyName)
{
- return this._store[propertyName];
+ if (propertyName in this._store)
+ return this._store[propertyName];
+ return this._defaultValues[propertyName];
},
_set: function(propertyName, newValue)
diff --git a/WebCore/inspector/front-end/SourceCSSTokenizer.js b/WebCore/inspector/front-end/SourceCSSTokenizer.js
index f7d7d51..1d8a784 100644
--- a/WebCore/inspector/front-end/SourceCSSTokenizer.js
+++ b/WebCore/inspector/front-end/SourceCSSTokenizer.js
@@ -81,13 +81,13 @@ WebInspector.SourceCSSTokenizer = function()
"-webkit-column-gap", "-webkit-column-rule", "-webkit-column-rule-color", "-webkit-column-rule-style",
"-webkit-column-rule-width", "-webkit-column-width", "-webkit-columns", "-webkit-font-size-delta",
"-webkit-font-smoothing", "-webkit-highlight", "-webkit-line-break", "-webkit-line-clamp",
- "-webkit-margin-bottom-collapse", "-webkit-margin-collapse", "-webkit-margin-start", "-webkit-margin-top-collapse",
+ "-webkit-margin-bottom-collapse", "-webkit-margin-collapse", "-webkit-margin-end", "-webkit-margin-start", "-webkit-margin-top-collapse",
"-webkit-marquee", "-webkit-marquee-direction", "-webkit-marquee-increment", "-webkit-marquee-repetition",
"-webkit-marquee-speed", "-webkit-marquee-style", "-webkit-mask", "-webkit-mask-attachment",
"-webkit-mask-box-image", "-webkit-mask-clip", "-webkit-mask-composite", "-webkit-mask-image",
"-webkit-mask-origin", "-webkit-mask-position", "-webkit-mask-position-x", "-webkit-mask-position-y",
"-webkit-mask-repeat", "-webkit-mask-repeat-x", "-webkit-mask-repeat-y", "-webkit-mask-size",
- "-webkit-match-nearest-mail-blockquote-color", "-webkit-nbsp-mode", "-webkit-padding-start",
+ "-webkit-match-nearest-mail-blockquote-color", "-webkit-nbsp-mode", "-webkit-padding-end", "-webkit-padding-start",
"-webkit-perspective", "-webkit-perspective-origin", "-webkit-perspective-origin-x", "-webkit-perspective-origin-y",
"-webkit-rtl-ordering", "-webkit-text-decorations-in-effect", "-webkit-text-fill-color", "-webkit-text-security",
"-webkit-text-size-adjust", "-webkit-text-stroke", "-webkit-text-stroke-color", "-webkit-text-stroke-width",
diff --git a/WebCore/inspector/front-end/StoragePanel.js b/WebCore/inspector/front-end/StoragePanel.js
index fef7802..2733907 100644
--- a/WebCore/inspector/front-end/StoragePanel.js
+++ b/WebCore/inspector/front-end/StoragePanel.js
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2010 Apple Inc. All rights reserved.
* Copyright (C) 2009 Joseph Pecoraro
*
* Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@
WebInspector.StoragePanel = function(database)
{
- WebInspector.Panel.call(this);
+ WebInspector.Panel.call(this, "storage");
this.createSidebar();
@@ -49,6 +49,10 @@ WebInspector.StoragePanel = function(database)
this.sidebarTree.appendChild(this.cookieListTreeElement);
this.cookieListTreeElement.expand();
+ this.applicationCacheListTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("APPLICATION CACHE"), {}, true);
+ this.sidebarTree.appendChild(this.applicationCacheListTreeElement);
+ this.applicationCacheListTreeElement.expand();
+
this.storageViews = document.createElement("div");
this.storageViews.id = "storage-views";
this.element.appendChild(this.storageViews);
@@ -60,8 +64,6 @@ WebInspector.StoragePanel = function(database)
}
WebInspector.StoragePanel.prototype = {
- toolbarItemClass: "storage",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Storage");
@@ -99,12 +101,16 @@ WebInspector.StoragePanel.prototype = {
this._cookieViews = {};
+ this._applicationCacheView = null;
+ delete this._cachedApplicationCacheViewStatus;
+
this.databasesListTreeElement.removeChildren();
this.localStorageListTreeElement.removeChildren();
this.sessionStorageListTreeElement.removeChildren();
this.cookieListTreeElement.removeChildren();
+ this.applicationCacheListTreeElement.removeChildren();
- this.storageViews.removeChildren();
+ this.storageViews.removeChildren();
this.storageViewStatusBarItemsContainer.removeChildren();
@@ -138,6 +144,12 @@ WebInspector.StoragePanel.prototype = {
this.sessionStorageListTreeElement.appendChild(domStorageTreeElement);
},
+ addApplicationCache: function(domain)
+ {
+ var applicationCacheTreeElement = new WebInspector.ApplicationCacheSidebarTreeElement(domain);
+ this.applicationCacheListTreeElement.appendChild(applicationCacheTreeElement);
+ },
+
selectDatabase: function(databaseId)
{
var database;
@@ -185,14 +197,7 @@ WebInspector.StoragePanel.prototype = {
}
}
- 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].element);
+ this._genericViewSetup(view);
},
showDOMStorage: function(domStorage)
@@ -210,14 +215,7 @@ WebInspector.StoragePanel.prototype = {
domStorage._domStorageView = 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]);
+ this._genericViewSetup(view);
},
showCookies: function(treeElement, cookieDomain)
@@ -231,12 +229,33 @@ WebInspector.StoragePanel.prototype = {
this._cookieViews[cookieDomain] = view;
}
- view.show(this.storageViews);
+ this._genericViewSetup(view);
+ },
+
+ showApplicationCache: function(treeElement, appcacheDomain)
+ {
+ if (this.visibleView)
+ this.visibleView.hide();
+
+ var view = this._applicationCacheView;
+ if (!view) {
+ view = new WebInspector.ApplicationCacheItemsView(treeElement, appcacheDomain);
+ this._applicationCacheView = view;
+ }
+ this._genericViewSetup(view);
+
+ if ("_cachedApplicationCacheViewStatus" in this)
+ this._applicationCacheView.updateStatus(this._cachedApplicationCacheViewStatus);
+ },
+
+ _genericViewSetup: function(view)
+ {
+ view.show(this.storageViews);
this.visibleView = view;
this.storageViewStatusBarItemsContainer.removeChildren();
- var statusBarItems = view.statusBarItems;
+ var statusBarItems = view.statusBarItems || [];
for (var i = 0; i < statusBarItems.length; ++i)
this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
},
@@ -364,6 +383,25 @@ WebInspector.StoragePanel.prototype = {
domStorage._domStorageView.update();
},
+ updateApplicationCacheStatus: function(status)
+ {
+ this._cachedApplicationCacheViewStatus = status;
+ if (this._applicationCacheView && this._applicationCacheView === this.visibleView)
+ this._applicationCacheView.updateStatus(status);
+ },
+
+ updateNetworkState: function(isNowOnline)
+ {
+ if (this._applicationCacheView && this._applicationCacheView === this.visibleView)
+ this._applicationCacheView.updateNetworkState(isNowOnline);
+ },
+
+ updateManifest: function(manifest)
+ {
+ if (this._applicationCacheView && this._applicationCacheView === this.visibleView)
+ this._applicationCacheView.updateManifest(manifest);
+ },
+
_domStorageForId: function(storageId)
{
if (!this._domStorage)
@@ -540,3 +578,43 @@ WebInspector.CookieSidebarTreeElement.prototype = {
}
WebInspector.CookieSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
+
+WebInspector.ApplicationCacheSidebarTreeElement = function(appcacheDomain)
+{
+ WebInspector.SidebarTreeElement.call(this, "application-cache-sidebar-tree-item", appcacheDomain, "", null, false);
+ this._appcacheDomain = appcacheDomain;
+ this._subtitle = "";
+ this._mainTitle = this._appcacheDomain;
+ this.refreshTitles();
+}
+
+WebInspector.ApplicationCacheSidebarTreeElement.prototype = {
+ onselect: function()
+ {
+ WebInspector.panels.storage.showApplicationCache(this, this._appcacheDomain);
+ },
+
+ get mainTitle()
+ {
+ return this._mainTitle;
+ },
+
+ set mainTitle(x)
+ {
+ this._mainTitle = x;
+ this.refreshTitles();
+ },
+
+ get subtitle()
+ {
+ return this._subtitle;
+ },
+
+ set subtitle(x)
+ {
+ this._subtitle = x;
+ this.refreshTitles();
+ }
+}
+
+WebInspector.ApplicationCacheSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
diff --git a/WebCore/inspector/front-end/StylesSidebarPane.js b/WebCore/inspector/front-end/StylesSidebarPane.js
index 649b9d0..5f5a5ad 100644
--- a/WebCore/inspector/front-end/StylesSidebarPane.js
+++ b/WebCore/inspector/front-end/StylesSidebarPane.js
@@ -649,20 +649,24 @@ WebInspector.StylePropertiesSection = function(styleRule, subtitle, computedStyl
this.headerElement.addStyleClass("hidden");
} else {
if (!subtitle) {
- if (this.styleRule.parentStyleSheet && this.styleRule.parentStyleSheet.href) {
- var url = this.styleRule.parentStyleSheet.href;
- var link = WebInspector.linkifyResourceAsNode(url, "resources", this.rule.sourceLine + 1);
+ function linkifyUncopyable(url, line)
+ {
+ var link = WebInspector.linkifyResourceAsNode(url, "resources", line + 1);
link.setAttribute("data-uncopyable", link.textContent);
link.textContent = "";
- this.subtitleElement.appendChild(link);
- } else if (isUserAgent)
+ return link;
+ }
+
+ if (this.styleRule.parentStyleSheet && this.styleRule.parentStyleSheet.href)
+ this.subtitleElement.appendChild(linkifyUncopyable(this.styleRule.parentStyleSheet.href, this.rule.sourceLine));
+ else if (isUserAgent)
subtitle = WebInspector.UIString("user agent stylesheet");
else if (isUser)
subtitle = WebInspector.UIString("user stylesheet");
else if (isViaInspector)
subtitle = WebInspector.UIString("via inspector");
else
- subtitle = WebInspector.UIString("inline stylesheet");
+ this.subtitleElement.appendChild(linkifyUncopyable(this.rule.documentURL, this.rule.sourceLine));
}
if (isInherited)
this.element.addStyleClass("show-inherited"); // This one is related to inherited rules, not compted style.
diff --git a/WebCore/inspector/front-end/TimelinePanel.js b/WebCore/inspector/front-end/TimelinePanel.js
index 29efd79..1f12625 100644
--- a/WebCore/inspector/front-end/TimelinePanel.js
+++ b/WebCore/inspector/front-end/TimelinePanel.js
@@ -30,8 +30,7 @@
WebInspector.TimelinePanel = function()
{
- WebInspector.Panel.call(this);
- this.element.addStyleClass("timeline");
+ WebInspector.Panel.call(this, "timeline");
this.element.appendChild(this._createTopPane());
this.element.tabIndex = 0;
@@ -106,8 +105,6 @@ WebInspector.TimelinePanel.rowHeight = 18;
WebInspector.TimelinePanel.shortRecordThreshold = 0.015;
WebInspector.TimelinePanel.prototype = {
- toolbarItemClass: "timeline",
-
_createTopPane: function() {
var topPaneElement = document.createElement("div");
topPaneElement.id = "timeline-overview-panel";
diff --git a/WebCore/inspector/front-end/WebKit.qrc b/WebCore/inspector/front-end/WebKit.qrc
index add50e1..42ad915 100644
--- a/WebCore/inspector/front-end/WebKit.qrc
+++ b/WebCore/inspector/front-end/WebKit.qrc
@@ -2,6 +2,7 @@
<qresource prefix="/webkit/inspector">
<file>inspector.html</file>
<file>AbstractTimelinePanel.js</file>
+ <file>ApplicationCacheItemsView.js</file>
<file>AuditCategories.js</file>
<file>AuditLauncherView.js</file>
<file>AuditResultView.js</file>
@@ -103,6 +104,7 @@
<file>inspectorSyntaxHighlight.css</file>
<file>popover.css</file>
<file>textViewer.css</file>
+ <file>Images/applicationCache.png</file>
<file>Images/auditsIcon.png</file>
<file>Images/back.png</file>
<file>Images/breakpointBorder.png</file>
diff --git a/WebCore/inspector/front-end/inspector.css b/WebCore/inspector/front-end/inspector.css
index b92672a..d8e29e8 100644
--- a/WebCore/inspector/front-end/inspector.css
+++ b/WebCore/inspector/front-end/inspector.css
@@ -1826,6 +1826,10 @@ body.inactive .sidebar {
content: url(Images/cookie.png);
}
+.application-cache-sidebar-tree-item .icon {
+ content: url(Images/applicationCache.png);
+}
+
#storage-views {
position: absolute;
top: 0;
@@ -3702,7 +3706,7 @@ body.inactive .sidebar-tree-item.selected .bubble.search-matches {
background-color: rgb(66, 129, 235) !important;
}
-.timeline-records-counter {
+.timeline-records-counter, .storage-application-cache-status, .storage-application-cache-connectivity {
font-size: 11px;
text-shadow: white 0 1px 0;
}
@@ -3718,6 +3722,22 @@ body.inactive .sidebar-tree-item.selected .bubble.search-matches {
margin-top: -2px;
}
+.storage-application-cache-status-icon, .storage-application-cache-connectivity-icon {
+ margin-bottom: -3px;
+ margin-left: 5px;
+ vertical-align: middle;
+}
+
+.status-bar-divider {
+ margin-left: 7px;
+ border-right: 1px solid #CCC;
+}
+
+.storage-application-cache-status, .storage-application-cache-connectivity {
+ position: relative;
+ top: 4px;
+}
+
/* Profiler Style */
#profile-views {
diff --git a/WebCore/inspector/front-end/inspector.html b/WebCore/inspector/front-end/inspector.html
index 8a8b7d5..c829195 100644
--- a/WebCore/inspector/front-end/inspector.html
+++ b/WebCore/inspector/front-end/inspector.html
@@ -64,6 +64,7 @@ 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="CookieItemsView.js"></script>
+ <script type="text/javascript" src="ApplicationCacheItemsView.js"></script>
<script type="text/javascript" src="Script.js"></script>
<script type="text/javascript" src="BreakpointManager.js"></script>
<script type="text/javascript" src="SidebarPane.js"></script>
diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
index 3bb4180..89d1ae0 100644
--- a/WebCore/inspector/front-end/inspector.js
+++ b/WebCore/inspector/front-end/inspector.js
@@ -53,6 +53,7 @@ var WebInspector = {
resources: {},
resourceURLMap: {},
cookieDomains: {},
+ applicationCacheDomains: {},
missingLocalizedStrings: {},
pendingDispatches: 0,
@@ -566,6 +567,11 @@ WebInspector.dispatch = function() {
// This is important to LayoutTests.
function delayDispatch()
{
+ if (!(methodName in WebInspector)) {
+ console.error("Attempted to dispatch unimplemented WebInspector method: %s", methodName);
+ return;
+ }
+
WebInspector[methodName].apply(WebInspector, parameters);
WebInspector.pendingDispatches--;
}
@@ -575,8 +581,7 @@ WebInspector.dispatch = function() {
WebInspector.dispatchMessageFromBackend = function(arguments)
{
- var methodName = arguments.shift();
- WebInspector[methodName].apply(this, arguments);
+ WebInspector.dispatch.apply(this, arguments);
}
@@ -716,11 +721,12 @@ WebInspector._registerShortcuts = function()
WebInspector.documentKeyDown = function(event)
{
+ var isInputElement = event.target.nodeName === "INPUT";
var isInEditMode = event.target.enclosingNodeOrSelfWithClass("text-prompt") || WebInspector.isEditingAnyField();
const helpKey = WebInspector.isMac() ? "U+003F" : "U+00BF"; // "?" for both platforms
if (event.keyIdentifier === "F1" ||
- (event.keyIdentifier === helpKey && event.shiftKey && (!isInEditMode || event.metaKey))) {
+ (event.keyIdentifier === helpKey && event.shiftKey && (!isInEditMode && !isInputElement || event.metaKey))) {
WebInspector.shortcutsHelp.show();
event.stopPropagation();
event.preventDefault();
@@ -1163,6 +1169,7 @@ WebInspector.updateResource = function(identifier, payload)
if (match) {
var protocol = match[1].toLowerCase();
this._addCookieDomain(match[2]);
+ this._addAppCacheDomain(match[2]);
}
}
@@ -1174,6 +1181,8 @@ WebInspector.updateResource = function(identifier, payload)
resource.statusText = payload.statusText;
resource.suggestedFilename = payload.suggestedFilename;
resource.responseHeaders = payload.responseHeaders;
+ resource.connectionID = payload.connectionID;
+ resource.timing = payload.timing;
}
if (payload.didTypeChange) {
@@ -1258,6 +1267,18 @@ WebInspector._addCookieDomain = function(domain)
this.panels.storage.addCookieDomain(domain);
}
+WebInspector._addAppCacheDomain = function(domain)
+{
+ // Eliminate duplicate domains from the list.
+ if (domain in this.applicationCacheDomains)
+ return;
+ this.applicationCacheDomains[domain] = true;
+
+ if (!this.panels.storage)
+ return;
+ this.panels.storage.addApplicationCache(domain);
+}
+
WebInspector.addDOMStorage = function(payload)
{
if (!this.panels.storage)
@@ -1271,11 +1292,19 @@ WebInspector.addDOMStorage = function(payload)
WebInspector.updateDOMStorage = function(storageId)
{
- if (!this.panels.storage)
- return;
this.panels.storage.updateDOMStorage(storageId);
}
+WebInspector.updateApplicationCacheStatus = function(status)
+{
+ this.panels.storage.updateApplicationCacheStatus(status);
+}
+
+WebInspector.updateNetworkState = function(isNowOnline)
+{
+ this.panels.storage.updateNetworkState(isNowOnline);
+}
+
WebInspector.resourceTrackingWasEnabled = function()
{
this.panels.resources.resourceTrackingWasEnabled();
@@ -1286,7 +1315,6 @@ WebInspector.resourceTrackingWasDisabled = function()
this.panels.resources.resourceTrackingWasDisabled();
}
-
WebInspector.searchingForNodeWasEnabled = function()
{
this.panels.elements.searchingForNodeWasEnabled();
@@ -1388,6 +1416,7 @@ WebInspector.reset = function()
this.resources = {};
this.resourceURLMap = {};
this.cookieDomains = {};
+ this.applicationCacheDomains = {};
this.hoveredDOMNode = null;
delete this.mainResource;
diff --git a/WebCore/loader/CachedResource.cpp b/WebCore/loader/CachedResource.cpp
index 75037ba..bde5da5 100644
--- a/WebCore/loader/CachedResource.cpp
+++ b/WebCore/loader/CachedResource.cpp
@@ -485,9 +485,9 @@ bool CachedResource::makePurgeable(bool purgeable)
return false;
if (m_data->hasPurgeableBuffer()) {
- m_purgeableData.set(m_data->releasePurgeableBuffer());
+ m_purgeableData = m_data->releasePurgeableBuffer();
} else {
- m_purgeableData.set(PurgeableBuffer::create(m_data->data(), m_data->size()));
+ m_purgeableData = PurgeableBuffer::create(m_data->data(), m_data->size());
if (!m_purgeableData)
return false;
}
diff --git a/WebCore/loader/CrossOriginAccessControl.cpp b/WebCore/loader/CrossOriginAccessControl.cpp
index 01596e2..f019f28 100644
--- a/WebCore/loader/CrossOriginAccessControl.cpp
+++ b/WebCore/loader/CrossOriginAccessControl.cpp
@@ -92,7 +92,7 @@ bool isOnAccessControlResponseHeaderWhitelist(const String& name)
return allowedCrossOriginResponseHeaders->contains(name);
}
-bool passesAccessControlCheck(const ResourceResponse& response, bool includeCredentials, SecurityOrigin* securityOrigin)
+bool passesAccessControlCheck(const ResourceResponse& response, bool includeCredentials, SecurityOrigin* securityOrigin, String& errorDescription)
{
// A wildcard Access-Control-Allow-Origin can not be used if credentials are to be sent,
// even with Access-Control-Allow-Credentials set to true.
@@ -100,17 +100,25 @@ bool passesAccessControlCheck(const ResourceResponse& response, bool includeCred
if (accessControlOriginString == "*" && !includeCredentials)
return true;
- if (securityOrigin->isUnique())
+ if (securityOrigin->isUnique()) {
+ errorDescription = "Cannot make any requests from " + securityOrigin->toString() + ".";
return false;
+ }
+ // FIXME: Access-Control-Allow-Origin can contain a list of origins.
RefPtr<SecurityOrigin> accessControlOrigin = SecurityOrigin::createFromString(accessControlOriginString);
- if (!accessControlOrigin->isSameSchemeHostPort(securityOrigin))
+ if (!accessControlOrigin->isSameSchemeHostPort(securityOrigin)) {
+ errorDescription = (accessControlOriginString == "*") ? "Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true."
+ : "Origin " + securityOrigin->toString() + " is not allowed by Access-Control-Allow-Origin.";
return false;
+ }
if (includeCredentials) {
const String& accessControlCredentialsString = response.httpHeaderField("Access-Control-Allow-Credentials");
- if (accessControlCredentialsString != "true")
+ if (accessControlCredentialsString != "true") {
+ errorDescription = "Credentials flag is true, but Access-Control-Allow-Credentials is not \"true\".";
return false;
+ }
}
return true;
diff --git a/WebCore/loader/CrossOriginAccessControl.h b/WebCore/loader/CrossOriginAccessControl.h
index 267646f..4a904d6 100644
--- a/WebCore/loader/CrossOriginAccessControl.h
+++ b/WebCore/loader/CrossOriginAccessControl.h
@@ -36,6 +36,6 @@ namespace WebCore {
bool isOnAccessControlSimpleRequestHeaderWhitelist(const String& name, const String& value);
bool isOnAccessControlResponseHeaderWhitelist(const String&);
- bool passesAccessControlCheck(const ResourceResponse&, bool includeCredentials, SecurityOrigin*);
+ bool passesAccessControlCheck(const ResourceResponse&, bool includeCredentials, SecurityOrigin*, String& errorDescription);
} // namespace WebCore
diff --git a/WebCore/loader/CrossOriginPreflightResultCache.cpp b/WebCore/loader/CrossOriginPreflightResultCache.cpp
index cea66b1..f0211af 100644
--- a/WebCore/loader/CrossOriginPreflightResultCache.cpp
+++ b/WebCore/loader/CrossOriginPreflightResultCache.cpp
@@ -35,6 +35,8 @@
namespace WebCore {
+using namespace std;
+
// These values are at the discretion of the user agent.
static const unsigned defaultPreflightCacheTimeoutSeconds = 5;
static const unsigned maxPreflightCacheTimeoutSeconds = 600; // Should be short enough to minimize the risk of using a poisoned cache after switching to a secure network.
@@ -87,15 +89,19 @@ static bool parseAccessControlAllowList(const String& string, HashSet<String, Ha
return true;
}
-bool CrossOriginPreflightResultCacheItem::parse(const ResourceResponse& response)
+bool CrossOriginPreflightResultCacheItem::parse(const ResourceResponse& response, String& errorDescription)
{
m_methods.clear();
- if (!parseAccessControlAllowList(response.httpHeaderField("Access-Control-Allow-Methods"), m_methods))
+ if (!parseAccessControlAllowList(response.httpHeaderField("Access-Control-Allow-Methods"), m_methods)) {
+ errorDescription = "Cannot parse Access-Control-Allow-Methods response header field.";
return false;
+ }
m_headers.clear();
- if (!parseAccessControlAllowList(response.httpHeaderField("Access-Control-Allow-Headers"), m_headers))
+ if (!parseAccessControlAllowList(response.httpHeaderField("Access-Control-Allow-Headers"), m_headers)) {
+ errorDescription = "Cannot parse Access-Control-Allow-Headers response header field.";
return false;
+ }
unsigned expiryDelta;
if (parseAccessControlMaxAge(response.httpHeaderField("Access-Control-Max-Age"), expiryDelta)) {
@@ -108,30 +114,37 @@ bool CrossOriginPreflightResultCacheItem::parse(const ResourceResponse& response
return true;
}
-bool CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod(const String& method) const
+bool CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod(const String& method, String& errorDescription) const
{
- return m_methods.contains(method) || isOnAccessControlSimpleRequestMethodWhitelist(method);
+ if (m_methods.contains(method) || isOnAccessControlSimpleRequestMethodWhitelist(method))
+ return true;
+
+ errorDescription = "Method " + method + " is not allowed by Access-Control-Allow-Methods.";
+ return false;
}
-bool CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders(const HTTPHeaderMap& requestHeaders) const
+bool CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders(const HTTPHeaderMap& requestHeaders, String& errorDescription) const
{
HTTPHeaderMap::const_iterator end = requestHeaders.end();
for (HTTPHeaderMap::const_iterator it = requestHeaders.begin(); it != end; ++it) {
- if (!m_headers.contains(it->first) && !isOnAccessControlSimpleRequestHeaderWhitelist(it->first, it->second))
+ if (!m_headers.contains(it->first) && !isOnAccessControlSimpleRequestHeaderWhitelist(it->first, it->second)) {
+ errorDescription = "Request header field " + it->first + " is not allowed by Access-Control-Allow-Headers.";
return false;
+ }
}
return true;
}
bool CrossOriginPreflightResultCacheItem::allowsRequest(bool includeCredentials, const String& method, const HTTPHeaderMap& requestHeaders) const
{
+ String ignoredExplanation;
if (m_absoluteExpiryTime < currentTime())
return false;
if (includeCredentials && !m_credentials)
return false;
- if (!allowsCrossOriginMethod(method))
+ if (!allowsCrossOriginMethod(method, ignoredExplanation))
return false;
- if (!allowsCrossOriginHeaders(requestHeaders))
+ if (!allowsCrossOriginHeaders(requestHeaders, ignoredExplanation))
return false;
return true;
}
@@ -143,10 +156,15 @@ CrossOriginPreflightResultCache& CrossOriginPreflightResultCache::shared()
return cache;
}
-void CrossOriginPreflightResultCache::appendEntry(const String& origin, const KURL& url, CrossOriginPreflightResultCacheItem* preflightResult)
+void CrossOriginPreflightResultCache::appendEntry(const String& origin, const KURL& url, PassOwnPtr<CrossOriginPreflightResultCacheItem> preflightResult)
{
ASSERT(isMainThread());
- m_preflightHashMap.set(std::make_pair(origin, url), preflightResult);
+ CrossOriginPreflightResultCacheItem* resultPtr = preflightResult.leakPtr();
+ pair<CrossOriginPreflightResultHashMap::iterator, bool> addResult = m_preflightHashMap.add(make_pair(origin, url), resultPtr);
+ if (!addResult.second) {
+ // FIXME: We need to delete the old value before replacing with the new one.
+ addResult.first->second = resultPtr;
+ }
}
bool CrossOriginPreflightResultCache::canSkipPreflight(const String& origin, const KURL& url, bool includeCredentials, const String& method, const HTTPHeaderMap& requestHeaders)
diff --git a/WebCore/loader/CrossOriginPreflightResultCache.h b/WebCore/loader/CrossOriginPreflightResultCache.h
index 8e5b239..0f3e356 100644
--- a/WebCore/loader/CrossOriginPreflightResultCache.h
+++ b/WebCore/loader/CrossOriginPreflightResultCache.h
@@ -31,6 +31,7 @@
#include "StringHash.h"
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
+#include <wtf/PassOwnPtr.h>
namespace WebCore {
@@ -45,9 +46,9 @@ namespace WebCore {
{
}
- bool parse(const ResourceResponse&);
- bool allowsCrossOriginMethod(const String&) const;
- bool allowsCrossOriginHeaders(const HTTPHeaderMap&) const;
+ bool parse(const ResourceResponse&, String& errorDescription);
+ bool allowsCrossOriginMethod(const String&, String& errorDescription) const;
+ bool allowsCrossOriginHeaders(const HTTPHeaderMap&, String& errorDescription) const;
bool allowsRequest(bool includeCredentials, const String& method, const HTTPHeaderMap& requestHeaders) const;
private:
@@ -66,7 +67,7 @@ namespace WebCore {
public:
static CrossOriginPreflightResultCache& shared();
- void appendEntry(const String& origin, const KURL&, CrossOriginPreflightResultCacheItem*);
+ void appendEntry(const String& origin, const KURL&, PassOwnPtr<CrossOriginPreflightResultCacheItem>);
bool canSkipPreflight(const String& origin, const KURL&, bool includeCredentials, const String& method, const HTTPHeaderMap& requestHeaders);
void empty();
diff --git a/WebCore/loader/DocumentThreadableLoader.cpp b/WebCore/loader/DocumentThreadableLoader.cpp
index ee926b1..4a7a88b 100644
--- a/WebCore/loader/DocumentThreadableLoader.cpp
+++ b/WebCore/loader/DocumentThreadableLoader.cpp
@@ -75,7 +75,7 @@ DocumentThreadableLoader::DocumentThreadableLoader(Document* document, Threadabl
}
if (m_options.crossOriginRequestPolicy == DenyCrossOriginRequests) {
- m_client->didFail(ResourceError());
+ m_client->didFail(ResourceError(errorDomainWebKitInternal, 0, request.url().string(), "Cross origin requests are not supported."));
return;
}
@@ -88,7 +88,7 @@ DocumentThreadableLoader::DocumentThreadableLoader(Document* document, Threadabl
if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(crossOriginRequest->httpMethod(), crossOriginRequest->httpHeaderFields()))
makeSimpleCrossOriginAccessRequest(*crossOriginRequest);
else {
- m_actualRequest.set(crossOriginRequest.release());
+ m_actualRequest = crossOriginRequest.release();
if (CrossOriginPreflightResultCache::shared().canSkipPreflight(document->securityOrigin()->toString(), m_actualRequest->url(), m_options.allowCredentials, m_actualRequest->httpMethod(), m_actualRequest->httpHeaderFields()))
preflightSuccess();
@@ -103,7 +103,7 @@ void DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest(const Resource
// 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());
+ m_client->didFail(ResourceError(errorDomainWebKitInternal, 0, request.url().string(), "Cross origin requests are only supported for HTTP."));
return;
}
@@ -186,25 +186,26 @@ void DocumentThreadableLoader::didReceiveResponse(SubresourceLoader* loader, con
ASSERT(m_client);
ASSERT_UNUSED(loader, loader == m_loader);
+ String accessControlErrorDescription;
if (m_actualRequest) {
- if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin())) {
- preflightFailure();
+ if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin(), accessControlErrorDescription)) {
+ preflightFailure(response.url(), accessControlErrorDescription);
return;
}
OwnPtr<CrossOriginPreflightResultCacheItem> preflightResult(new CrossOriginPreflightResultCacheItem(m_options.allowCredentials));
- if (!preflightResult->parse(response)
- || !preflightResult->allowsCrossOriginMethod(m_actualRequest->httpMethod())
- || !preflightResult->allowsCrossOriginHeaders(m_actualRequest->httpHeaderFields())) {
- preflightFailure();
+ if (!preflightResult->parse(response, accessControlErrorDescription)
+ || !preflightResult->allowsCrossOriginMethod(m_actualRequest->httpMethod(), accessControlErrorDescription)
+ || !preflightResult->allowsCrossOriginHeaders(m_actualRequest->httpHeaderFields(), accessControlErrorDescription)) {
+ preflightFailure(response.url(), accessControlErrorDescription);
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());
+ if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin(), accessControlErrorDescription)) {
+ m_client->didFail(ResourceError(errorDomainWebKitInternal, 0, response.url().string(), accessControlErrorDescription));
return;
}
}
@@ -290,10 +291,10 @@ void DocumentThreadableLoader::preflightSuccess()
loadRequest(*actualRequest, SkipSecurityCheck);
}
-void DocumentThreadableLoader::preflightFailure()
+void DocumentThreadableLoader::preflightFailure(const String& url, const String& errorDescription)
{
m_actualRequest = 0; // Prevent didFinishLoading() from bypassing access check.
- m_client->didFail(ResourceError());
+ m_client->didFail(ResourceError(errorDomainWebKitInternal, 0, url, errorDescription));
}
void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, SecurityCheckPolicy securityCheck)
diff --git a/WebCore/loader/DocumentThreadableLoader.h b/WebCore/loader/DocumentThreadableLoader.h
index 48d1551..9800b9a 100644
--- a/WebCore/loader/DocumentThreadableLoader.h
+++ b/WebCore/loader/DocumentThreadableLoader.h
@@ -43,6 +43,7 @@ namespace WebCore {
class Document;
class KURL;
class ResourceRequest;
+ class String;
class ThreadableLoaderClient;
class DocumentThreadableLoader : public RefCounted<DocumentThreadableLoader>, public ThreadableLoader, private SubresourceLoaderClient {
@@ -84,7 +85,7 @@ namespace WebCore {
void makeSimpleCrossOriginAccessRequest(const ResourceRequest& request);
void makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request);
void preflightSuccess();
- void preflightFailure();
+ void preflightFailure(const String& url, const String& errorDescription);
void loadRequest(const ResourceRequest&, SecurityCheckPolicy);
bool isAllowedRedirect(const KURL&);
diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index bdf7298..7b7487f 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -462,6 +462,7 @@ void FrameLoader::stopLoading(UnloadEventPolicy unloadEventPolicy, DatabasePolic
m_frame->domWindow()->dispatchEvent(PageTransitionEvent::create(eventNames().pagehideEvent, m_frame->document()->inPageCache()), m_frame->document());
if (!m_frame->document()->inPageCache())
m_frame->domWindow()->dispatchEvent(Event::create(eventNames().unloadEvent, false, false), m_frame->domWindow()->document());
+ m_frameLoadTimeline.unloadEventEnd = currentTime();
}
m_pageDismissalEventBeingDispatched = false;
if (m_frame->document())
@@ -826,7 +827,7 @@ void FrameLoader::startIconLoader()
// This is either a reload or the icon database said "yes, load the icon", so kick off the load!
if (!m_iconLoader)
- m_iconLoader.set(IconLoader::create(m_frame).release());
+ m_iconLoader = IconLoader::create(m_frame);
m_iconLoader->startLoading();
}
@@ -1530,6 +1531,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t
if (m_pageDismissalEventBeingDispatched)
return;
+ m_frameLoadTimeline = FrameLoadTimeline();
+ m_frameLoadTimeline.navigationStart = currentTime();
+
policyChecker()->setLoadType(type);
RefPtr<FormState> formState = prpFormState;
bool isFormSubmission = formState;
@@ -2644,6 +2648,9 @@ String FrameLoader::userAgent(const KURL& url) const
void FrameLoader::handledOnloadEvents()
{
m_client->dispatchDidHandleOnloadEvents();
+
+ m_loadType = FrameLoadTypeStandard;
+
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
if (documentLoader())
documentLoader()->applicationCacheHost()->stopDeferringEvents();
@@ -2716,6 +2723,13 @@ void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadTyp
applyUserAgent(request);
+ // If we inherit cache policy from a main resource, we use the DocumentLoader's
+ // original request cache policy for two reasons:
+ // 1. For POST requests, we mutate the cache policy for the main resource,
+ // but we do not want this to apply to subresources
+ // 2. Delegates that modify the cache policy using willSendRequest: should
+ // not affect any other resources. Such changes need to be done
+ // per request.
if (loadType == FrameLoadTypeReload) {
request.setCachePolicy(ReloadIgnoringCacheData);
request.setHTTPHeaderField("Cache-Control", "max-age=0");
@@ -2723,8 +2737,12 @@ void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadTyp
request.setCachePolicy(ReloadIgnoringCacheData);
request.setHTTPHeaderField("Cache-Control", "no-cache");
request.setHTTPHeaderField("Pragma", "no-cache");
- } else if (isBackForwardLoadType(loadType) && !request.url().protocolIs("https"))
+ } else if (request.isConditional())
+ request.setCachePolicy(ReloadIgnoringCacheData);
+ else if (isBackForwardLoadType(loadType) && !request.url().protocolIs("https"))
request.setCachePolicy(ReturnCacheDataElseLoad);
+ else if (!mainResource && documentLoader()->isLoadingInAPISense())
+ request.setCachePolicy(documentLoader()->originalRequest().cachePolicy());
if (mainResource)
request.setHTTPAccept(defaultAcceptHeader);
@@ -2823,17 +2841,6 @@ unsigned long FrameLoader::loadResourceSynchronously(const ResourceRequest& requ
ResourceRequest initialRequest = request;
initialRequest.setTimeoutInterval(10);
- // Use the original request's cache policy for two reasons:
- // 1. For POST requests, we mutate the cache policy for the main resource,
- // but we do not want this to apply to subresources
- // 2. Delegates that modify the cache policy using willSendRequest: should
- // not affect any other resources. Such changes need to be done
- // per request.
- if (initialRequest.isConditional())
- initialRequest.setCachePolicy(ReloadIgnoringCacheData);
- else
- initialRequest.setCachePolicy(originalRequest().cachePolicy());
-
if (!referrer.isEmpty())
initialRequest.setHTTPReferrer(referrer);
addHTTPOriginIfNeeded(initialRequest, outgoingOrigin());
@@ -2841,6 +2848,8 @@ unsigned long FrameLoader::loadResourceSynchronously(const ResourceRequest& requ
if (Page* page = m_frame->page())
initialRequest.setFirstPartyForCookies(page->mainFrame()->loader()->documentLoader()->request().url());
initialRequest.setHTTPUserAgent(client()->userAgent(request.url()));
+
+ addExtraFieldsToSubresourceRequest(initialRequest);
unsigned long identifier = 0;
ResourceRequest newRequest(initialRequest);
diff --git a/WebCore/loader/FrameLoader.h b/WebCore/loader/FrameLoader.h
index e157850..491e6ef 100644
--- a/WebCore/loader/FrameLoader.h
+++ b/WebCore/loader/FrameLoader.h
@@ -197,6 +197,8 @@ public:
void didChangeIcons(DocumentLoader*);
FrameLoadType loadType() const;
+ FrameLoadTimeline* frameLoadTimeline() { return &m_frameLoadTimeline; }
+
CachePolicy subresourceCachePolicy() const;
void didFirstLayout();
@@ -448,6 +450,7 @@ private:
FrameState m_state;
FrameLoadType m_loadType;
+ FrameLoadTimeline m_frameLoadTimeline;
// Document loaders for the three phases of frame loading. Note that while
// a new request is being loaded, the old document loader may still be referenced.
diff --git a/WebCore/loader/FrameLoaderTypes.h b/WebCore/loader/FrameLoaderTypes.h
index 016de19..b1388a5 100644
--- a/WebCore/loader/FrameLoaderTypes.h
+++ b/WebCore/loader/FrameLoaderTypes.h
@@ -60,6 +60,21 @@ namespace WebCore {
FrameLoadTypeBackWMLDeckNotAccessible
};
+ struct FrameLoadTimeline {
+ FrameLoadTimeline()
+ : navigationStart(0)
+ , unloadEventEnd(0)
+ , loadEventStart(0)
+ , loadEventEnd(0)
+ {
+ }
+
+ double navigationStart;
+ double unloadEventEnd;
+ double loadEventStart;
+ double loadEventEnd;
+ };
+
enum NavigationType {
NavigationTypeLinkClicked,
NavigationTypeFormSubmitted,
diff --git a/WebCore/loader/ImageLoader.cpp b/WebCore/loader/ImageLoader.cpp
index a95d35a..d169d3e 100644
--- a/WebCore/loader/ImageLoader.cpp
+++ b/WebCore/loader/ImageLoader.cpp
@@ -27,6 +27,8 @@
#include "DocLoader.h"
#include "Document.h"
#include "Element.h"
+#include "HTMLNames.h"
+#include "HTMLObjectElement.h"
#include "RenderImage.h"
#if !ASSERT_DISABLED
@@ -255,6 +257,9 @@ void ImageLoader::dispatchPendingBeforeLoadEvent()
m_image = 0;
}
loadEventSender().cancelEvent(this);
+
+ if (m_element->hasTagName(HTMLNames::objectTag))
+ static_cast<HTMLObjectElement*>(m_element)->renderFallbackContent();
}
void ImageLoader::dispatchPendingLoadEvent()
diff --git a/WebCore/loader/SubresourceLoader.cpp b/WebCore/loader/SubresourceLoader.cpp
index 9c2959b..7aef353 100644
--- a/WebCore/loader/SubresourceLoader.cpp
+++ b/WebCore/loader/SubresourceLoader.cpp
@@ -84,17 +84,6 @@ PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, Subresourc
newRequest.setHTTPReferrer(fl->outgoingReferrer());
FrameLoader::addHTTPOriginIfNeeded(newRequest, fl->outgoingOrigin());
- // Use the original request's cache policy for two reasons:
- // 1. For POST requests, we mutate the cache policy for the main resource,
- // but we do not want this to apply to subresources
- // 2. Delegates that modify the cache policy using willSendRequest: should
- // not affect any other resources. Such changes need to be done
- // per request.
- if (newRequest.isConditional())
- newRequest.setCachePolicy(ReloadIgnoringCacheData);
- else
- newRequest.setCachePolicy(fl->originalRequest().cachePolicy());
-
fl->addExtraFieldsToSubresourceRequest(newRequest);
RefPtr<SubresourceLoader> subloader(adoptRef(new SubresourceLoader(frame, client, sendResourceLoadCallbacks, shouldContentSniff)));
diff --git a/WebCore/loader/TextResourceDecoder.cpp b/WebCore/loader/TextResourceDecoder.cpp
index e4fd855..6d43d77 100644
--- a/WebCore/loader/TextResourceDecoder.cpp
+++ b/WebCore/loader/TextResourceDecoder.cpp
@@ -812,7 +812,7 @@ String TextResourceDecoder::decode(const char* data, size_t len)
ASSERT(m_encoding.isValid());
if (!m_codec)
- m_codec.set(newTextCodec(m_encoding).release());
+ m_codec = newTextCodec(m_encoding);
if (m_buffer.isEmpty())
return m_codec->decode(data + lengthOfBOM, len - lengthOfBOM, false, m_contentType == XML, m_sawError);
@@ -842,7 +842,7 @@ String TextResourceDecoder::flush()
}
if (!m_codec)
- m_codec.set(newTextCodec(m_encoding).release());
+ m_codec = newTextCodec(m_encoding);
String result = m_codec->decode(m_buffer.data(), m_buffer.size(), true, m_contentType == XML && !m_useLenientXMLDecoding, m_sawError);
m_buffer.clear();
diff --git a/WebCore/loader/appcache/ApplicationCacheGroup.cpp b/WebCore/loader/appcache/ApplicationCacheGroup.cpp
index 526043b..3d1199d 100644
--- a/WebCore/loader/appcache/ApplicationCacheGroup.cpp
+++ b/WebCore/loader/appcache/ApplicationCacheGroup.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -45,12 +45,20 @@
#include "Settings.h"
#include <wtf/HashMap.h>
+#if ENABLE(INSPECTOR)
+#include "InspectorApplicationCacheAgent.h"
+#include "InspectorController.h"
+#include "ProgressTracker.h"
+#endif
+
namespace WebCore {
ApplicationCacheGroup::ApplicationCacheGroup(const KURL& manifestURL, bool isCopy)
: m_manifestURL(manifestURL)
, m_updateStatus(Idle)
, m_downloadingPendingMasterResourceLoadersCount(0)
+ , m_progressTotal(0)
+ , m_progressDone(0)
, m_frame(0)
, m_storageID(0)
, m_isObsolete(false)
@@ -368,12 +376,30 @@ void ApplicationCacheGroup::cacheDestroyed(ApplicationCache* cache)
}
}
+#if ENABLE(INSPECTOR)
+static void inspectorUpdateApplicationCacheStatus(Frame* frame)
+{
+ if (!frame)
+ return;
+
+ if (Page *page = frame->page()) {
+ if (InspectorApplicationCacheAgent* applicationCacheAgent = page->inspectorController()->applicationCacheAgent()) {
+ ApplicationCacheHost::Status status = frame->loader()->documentLoader()->applicationCacheHost()->status();
+ applicationCacheAgent->updateApplicationCacheStatus(status);
+ }
+ }
+}
+#endif
+
void ApplicationCacheGroup::setNewestCache(PassRefPtr<ApplicationCache> newestCache)
{
m_newestCache = newestCache;
m_caches.add(m_newestCache.get());
m_newestCache->setGroup(this);
+#if ENABLE(INSPECTOR)
+ inspectorUpdateApplicationCacheStatus(m_frame);
+#endif
}
void ApplicationCacheGroup::makeObsolete()
@@ -384,6 +410,9 @@ void ApplicationCacheGroup::makeObsolete()
m_isObsolete = true;
cacheStorage().cacheGroupMadeObsolete(this);
ASSERT(!m_storageID);
+#if ENABLE(INSPECTOR)
+ inspectorUpdateApplicationCacheStatus(m_frame);
+#endif
}
void ApplicationCacheGroup::update(Frame* frame, ApplicationCacheUpdateOption updateOption)
@@ -410,7 +439,7 @@ void ApplicationCacheGroup::update(Frame* frame, ApplicationCacheUpdateOption up
ASSERT(!m_frame);
m_frame = frame;
- m_updateStatus = Checking;
+ setUpdateStatus(Checking);
postListenerTask(ApplicationCacheHost::CHECKING_EVENT, m_associatedDocumentLoaders);
if (!m_newestCache) {
@@ -442,12 +471,43 @@ PassRefPtr<ResourceHandle> ApplicationCacheGroup::createResourceHandle(const KUR
request.setHTTPHeaderField("If-None-Match", eTag);
}
}
-
- return ResourceHandle::create(request, this, m_frame, false, true);
+
+ RefPtr<ResourceHandle> handle = ResourceHandle::create(request, this, m_frame, false, true);
+#if ENABLE(INSPECTOR)
+ // Because willSendRequest only gets called during redirects, we initialize
+ // the identifier and the first willSendRequest here.
+ m_currentResourceIdentifier = m_frame->page()->progress()->createUniqueIdentifier();
+ if (Page* page = m_frame->page()) {
+ InspectorController* inspectorController = page->inspectorController();
+ inspectorController->identifierForInitialRequest(m_currentResourceIdentifier, m_frame->loader()->documentLoader(), handle->request());
+ ResourceResponse redirectResponse = ResourceResponse();
+ inspectorController->willSendRequest(m_currentResourceIdentifier, request, redirectResponse);
+ }
+#endif
+ return handle;
+}
+
+#if ENABLE(INSPECTOR)
+void ApplicationCacheGroup::willSendRequest(ResourceHandle*, ResourceRequest& request, const ResourceResponse& redirectResponse)
+{
+ // This only gets called by ResourceHandleMac if there is a redirect.
+ if (Page* page = m_frame->page())
+ page->inspectorController()->willSendRequest(m_currentResourceIdentifier, request, redirectResponse);
}
+#endif
void ApplicationCacheGroup::didReceiveResponse(ResourceHandle* handle, const ResourceResponse& response)
{
+#if ENABLE(INSPECTOR)
+ if (Page* page = m_frame->page()) {
+ if (handle == m_manifestHandle) {
+ if (InspectorApplicationCacheAgent* applicationCacheAgent = page->inspectorController()->applicationCacheAgent())
+ applicationCacheAgent->didReceiveManifestResponse(m_currentResourceIdentifier, response);
+ } else
+ page->inspectorController()->didReceiveResponse(m_currentResourceIdentifier, response);
+ }
+#endif
+
if (handle == m_manifestHandle) {
didReceiveManifestResponse(response);
return;
@@ -512,8 +572,15 @@ void ApplicationCacheGroup::didReceiveResponse(ResourceHandle* handle, const Res
m_currentResource = ApplicationCacheResource::create(url, response, type);
}
-void ApplicationCacheGroup::didReceiveData(ResourceHandle* handle, const char* data, int length, int)
+void ApplicationCacheGroup::didReceiveData(ResourceHandle* handle, const char* data, int length, int lengthReceived)
{
+#if ENABLE(INSPECTOR)
+ if (Page* page = m_frame->page())
+ page->inspectorController()->didReceiveContentLength(m_currentResourceIdentifier, lengthReceived);
+#else
+ UNUSED_PARAM(lengthReceived);
+#endif
+
if (handle == m_manifestHandle) {
didReceiveManifestData(data, length);
return;
@@ -527,6 +594,11 @@ void ApplicationCacheGroup::didReceiveData(ResourceHandle* handle, const char* d
void ApplicationCacheGroup::didFinishLoading(ResourceHandle* handle)
{
+#if ENABLE(INSPECTOR)
+ if (Page* page = m_frame->page())
+ page->inspectorController()->didFinishLoading(m_currentResourceIdentifier);
+#endif
+
if (handle == m_manifestHandle) {
didFinishLoadingManifest();
return;
@@ -546,8 +618,15 @@ void ApplicationCacheGroup::didFinishLoading(ResourceHandle* handle)
startLoadingEntry();
}
-void ApplicationCacheGroup::didFail(ResourceHandle* handle, const ResourceError&)
+void ApplicationCacheGroup::didFail(ResourceHandle* handle, const ResourceError& error)
{
+#if ENABLE(INSPECTOR)
+ if (Page* page = m_frame->page())
+ page->inspectorController()->didFailLoading(m_currentResourceIdentifier, error);
+#else
+ UNUSED_PARAM(error);
+#endif
+
if (handle == m_manifestHandle) {
cacheUpdateFailed();
return;
@@ -648,7 +727,7 @@ void ApplicationCacheGroup::didFinishLoadingManifest()
associateDocumentLoaderWithCache(*iter, m_cacheBeingUpdated.get());
// We have the manifest, now download the resources.
- m_updateStatus = Downloading;
+ setUpdateStatus(Downloading);
postListenerTask(ApplicationCacheHost::DOWNLOADING_EVENT, m_associatedDocumentLoaders);
@@ -674,7 +753,10 @@ void ApplicationCacheGroup::didFinishLoadingManifest()
m_cacheBeingUpdated->setOnlineWhitelist(manifest.onlineWhitelistedURLs);
m_cacheBeingUpdated->setFallbackURLs(manifest.fallbackURLs);
m_cacheBeingUpdated->setAllowsAllNetworkRequests(manifest.allowAllNetworkRequests);
-
+
+ m_progressTotal = m_pendingEntries.size();
+ m_progressDone = 0;
+
startLoadingEntry();
}
@@ -719,7 +801,7 @@ void ApplicationCacheGroup::manifestNotFound()
}
m_downloadingPendingMasterResourceLoadersCount = 0;
- m_updateStatus = Idle;
+ setUpdateStatus(Idle);
m_frame = 0;
if (m_caches.isEmpty()) {
@@ -782,7 +864,12 @@ void ApplicationCacheGroup::checkIfLoadIsComplete()
// New cache stored, now remove the old cache.
if (oldNewestCache)
cacheStorage().remove(oldNewestCache.get());
- // Fire the success events.
+
+ // Fire the final progress event.
+ ASSERT(m_progressDone == m_progressTotal);
+ postListenerTask(ApplicationCacheHost::PROGRESS_EVENT, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
+
+ // Fire the success event.
postListenerTask(isUpgradeAttempt ? ApplicationCacheHost::UPDATEREADY_EVENT : ApplicationCacheHost::CACHED_EVENT, m_associatedDocumentLoaders);
} else {
if (cacheStorage().isMaximumSizeReached() && !m_calledReachedMaxAppCacheSize) {
@@ -832,7 +919,7 @@ void ApplicationCacheGroup::checkIfLoadIsComplete()
// Empty cache group's list of pending master entries.
m_pendingMasterResourceLoaders.clear();
m_completionType = None;
- m_updateStatus = Idle;
+ setUpdateStatus(Idle);
m_frame = 0;
m_calledReachedMaxAppCacheSize = false;
}
@@ -849,7 +936,8 @@ void ApplicationCacheGroup::startLoadingEntry()
EntryMap::const_iterator it = m_pendingEntries.begin();
- postListenerTask(ApplicationCacheHost::PROGRESS_EVENT, m_associatedDocumentLoaders);
+ postListenerTask(ApplicationCacheHost::PROGRESS_EVENT, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
+ m_progressDone++;
ASSERT(!m_currentHandle);
@@ -948,9 +1036,9 @@ void ApplicationCacheGroup::scheduleReachedMaxAppCacheSizeCallback()
class CallCacheListenerTask : public ScriptExecutionContext::Task {
public:
- static PassOwnPtr<CallCacheListenerTask> create(PassRefPtr<DocumentLoader> loader, ApplicationCacheHost::EventID eventID)
+ static PassOwnPtr<CallCacheListenerTask> create(PassRefPtr<DocumentLoader> loader, ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone)
{
- return new CallCacheListenerTask(loader, eventID);
+ return adoptPtr(new CallCacheListenerTask(loader, eventID, progressTotal, progressDone));
}
virtual void performTask(ScriptExecutionContext* context)
@@ -963,28 +1051,32 @@ public:
ASSERT(frame->loader()->documentLoader() == m_documentLoader.get());
- m_documentLoader->applicationCacheHost()->notifyDOMApplicationCache(m_eventID);
+ m_documentLoader->applicationCacheHost()->notifyDOMApplicationCache(m_eventID, m_progressTotal, m_progressDone);
}
private:
- CallCacheListenerTask(PassRefPtr<DocumentLoader> loader, ApplicationCacheHost::EventID eventID)
+ CallCacheListenerTask(PassRefPtr<DocumentLoader> loader, ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone)
: m_documentLoader(loader)
, m_eventID(eventID)
+ , m_progressTotal(progressTotal)
+ , m_progressDone(progressDone)
{
}
RefPtr<DocumentLoader> m_documentLoader;
ApplicationCacheHost::EventID m_eventID;
+ int m_progressTotal;
+ int m_progressDone;
};
-void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, const HashSet<DocumentLoader*>& loaderSet)
+void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone, const HashSet<DocumentLoader*>& loaderSet)
{
HashSet<DocumentLoader*>::const_iterator loaderSetEnd = loaderSet.end();
for (HashSet<DocumentLoader*>::const_iterator iter = loaderSet.begin(); iter != loaderSetEnd; ++iter)
- postListenerTask(eventID, *iter);
+ postListenerTask(eventID, progressTotal, progressDone, *iter);
}
-void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, DocumentLoader* loader)
+void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone, DocumentLoader* loader)
{
Frame* frame = loader->frame();
if (!frame)
@@ -992,7 +1084,15 @@ void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID event
ASSERT(frame->loader()->documentLoader() == loader);
- frame->document()->postTask(CallCacheListenerTask::create(loader, eventID));
+ frame->document()->postTask(CallCacheListenerTask::create(loader, eventID, progressTotal, progressDone));
+}
+
+void ApplicationCacheGroup::setUpdateStatus(UpdateStatus status)
+{
+ m_updateStatus = status;
+#if ENABLE(INSPECTOR)
+ inspectorUpdateApplicationCacheStatus(m_frame);
+#endif
}
void ApplicationCacheGroup::clearStorageID()
diff --git a/WebCore/loader/appcache/ApplicationCacheGroup.h b/WebCore/loader/appcache/ApplicationCacheGroup.h
index 8df52cc..9b8a6ab 100644
--- a/WebCore/loader/appcache/ApplicationCacheGroup.h
+++ b/WebCore/loader/appcache/ApplicationCacheGroup.h
@@ -67,12 +67,13 @@ public:
const KURL& manifestURL() const { return m_manifestURL; }
UpdateStatus updateStatus() const { return m_updateStatus; }
+ void setUpdateStatus(UpdateStatus status);
void setStorageID(unsigned storageID) { m_storageID = storageID; }
unsigned storageID() const { return m_storageID; }
void clearStorageID();
- void update(Frame*, ApplicationCacheUpdateOption); // FIXME: Frame should not bee needed when updating witout browsing context.
+ void update(Frame*, ApplicationCacheUpdateOption); // FIXME: Frame should not be needed when updating without browsing context.
void cacheDestroyed(ApplicationCache*);
bool cacheIsBeingUpdated(const ApplicationCache* cache) const { return cache == m_cacheBeingUpdated; }
@@ -91,8 +92,11 @@ public:
bool isCopy() const { return m_isCopy; }
private:
- static void postListenerTask(ApplicationCacheHost::EventID, const HashSet<DocumentLoader*>&);
- static void postListenerTask(ApplicationCacheHost::EventID, DocumentLoader*);
+ static void postListenerTask(ApplicationCacheHost::EventID id, const HashSet<DocumentLoader*>& set) { postListenerTask(id, 0, 0, set); }
+ static void postListenerTask(ApplicationCacheHost::EventID id, DocumentLoader* loader) { postListenerTask(id, 0, 0, loader); }
+ static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, const HashSet<DocumentLoader*>&);
+ static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, DocumentLoader*);
+
void scheduleReachedMaxAppCacheSizeCallback();
PassRefPtr<ResourceHandle> createResourceHandle(const KURL&, ApplicationCacheResource* newestCachedResource);
@@ -101,8 +105,11 @@ private:
// the existing client callback cannot be used, so assume that any client that enables application cache also wants it to use credential storage.
virtual bool shouldUseCredentialStorage(ResourceHandle*) { return true; }
+#if ENABLE(INSPECTOR)
+ virtual void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse&);
+#endif
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
- virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
+ virtual void didReceiveData(ResourceHandle*, const char*, int length, int lengthReceived);
virtual void didFinishLoading(ResourceHandle*);
virtual void didFail(ResourceHandle*, const ResourceError&);
@@ -147,6 +154,10 @@ private:
// The URLs and types of pending cache entries.
typedef HashMap<String, unsigned> EntryMap;
EntryMap m_pendingEntries;
+
+ // The total number of items to be processed to update the cache group and the number that have been done.
+ int m_progressTotal;
+ int m_progressDone;
// Frame used for fetching resources when updating.
// FIXME: An update started by a particular frame should not stop if it is destroyed, but there are other frames associated with the same cache group.
@@ -175,7 +186,11 @@ private:
RefPtr<ResourceHandle> m_currentHandle;
RefPtr<ApplicationCacheResource> m_currentResource;
-
+
+#if ENABLE(INSPECTOR)
+ unsigned long m_currentResourceIdentifier;
+#endif
+
RefPtr<ApplicationCacheResource> m_manifestResource;
RefPtr<ResourceHandle> m_manifestHandle;
diff --git a/WebCore/loader/appcache/ApplicationCacheHost.cpp b/WebCore/loader/appcache/ApplicationCacheHost.cpp
index fc98746..f63de55 100644
--- a/WebCore/loader/appcache/ApplicationCacheHost.cpp
+++ b/WebCore/loader/appcache/ApplicationCacheHost.cpp
@@ -37,6 +37,7 @@
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
#include "MainResourceLoader.h"
+#include "ProgressEvent.h"
#include "ResourceLoader.h"
#include "ResourceRequest.h"
#include "Settings.h"
@@ -228,35 +229,42 @@ void ApplicationCacheHost::setDOMApplicationCache(DOMApplicationCache* domApplic
m_domApplicationCache = domApplicationCache;
}
-void ApplicationCacheHost::notifyDOMApplicationCache(EventID id)
+void ApplicationCacheHost::notifyDOMApplicationCache(EventID id, int total, int done)
{
if (m_defersEvents) {
- // Events are deferred until document.onload has fired.
- m_deferredEvents.append(id);
+ // Event dispatching is deferred until document.onload has fired.
+ m_deferredEvents.append(DeferredEvent(id, total, done));
return;
}
- if (m_domApplicationCache) {
- ExceptionCode ec = 0;
- m_domApplicationCache->dispatchEvent(Event::create(DOMApplicationCache::toEventType(id), false, false), ec);
- ASSERT(!ec);
- }
+ dispatchDOMEvent(id, total, done);
}
void ApplicationCacheHost::stopDeferringEvents()
{
RefPtr<DocumentLoader> protect(documentLoader());
for (unsigned i = 0; i < m_deferredEvents.size(); ++i) {
- EventID id = m_deferredEvents[i];
- if (m_domApplicationCache) {
- ExceptionCode ec = 0;
- m_domApplicationCache->dispatchEvent(Event::create(DOMApplicationCache::toEventType(id), false, false), ec);
- ASSERT(!ec);
- }
+ const DeferredEvent& deferred = m_deferredEvents[i];
+ dispatchDOMEvent(deferred.eventID, deferred.progressTotal, deferred.progressDone);
}
m_deferredEvents.clear();
m_defersEvents = false;
}
+void ApplicationCacheHost::dispatchDOMEvent(EventID id, int total, int done)
+{
+ if (m_domApplicationCache) {
+ const AtomicString& eventType = DOMApplicationCache::toEventType(id);
+ ExceptionCode ec = 0;
+ RefPtr<Event> event;
+ if (id == PROGRESS_EVENT)
+ event = ProgressEvent::create(eventType, true, done, total);
+ else
+ event = Event::create(eventType, false, false);
+ m_domApplicationCache->dispatchEvent(event, ec);
+ ASSERT(!ec);
+ }
+}
+
void ApplicationCacheHost::setCandidateApplicationCacheGroup(ApplicationCacheGroup* group)
{
ASSERT(!m_applicationCache);
diff --git a/WebCore/loader/appcache/ApplicationCacheHost.h b/WebCore/loader/appcache/ApplicationCacheHost.h
index 52d4d40..a5b55e9 100644
--- a/WebCore/loader/appcache/ApplicationCacheHost.h
+++ b/WebCore/loader/appcache/ApplicationCacheHost.h
@@ -40,7 +40,7 @@
#include <wtf/Vector.h>
namespace WebCore {
-
+ class ApplicationCache;
class DOMApplicationCache;
class DocumentLoader;
class KURL;
@@ -52,7 +52,6 @@ namespace WebCore {
#if PLATFORM(CHROMIUM)
class ApplicationCacheHostInternal;
#else
- class ApplicationCache;
class ApplicationCacheGroup;
class ApplicationCacheResource;
class ApplicationCacheStorage;
@@ -108,23 +107,35 @@ namespace WebCore {
bool update();
bool swapCache();
- void setDOMApplicationCache(DOMApplicationCache* domApplicationCache);
- void notifyDOMApplicationCache(EventID id);
+ void setDOMApplicationCache(DOMApplicationCache*);
+ void notifyDOMApplicationCache(EventID, int progressTotal, int progressDone);
void stopDeferringEvents(); // Also raises the events that have been queued up.
+ ApplicationCache* applicationCacheForInspector() const { return applicationCache(); }
+
private:
bool isApplicationCacheEnabled();
- DocumentLoader* documentLoader() { return m_documentLoader; }
+ DocumentLoader* documentLoader() const { return m_documentLoader; }
+
+ struct DeferredEvent {
+ EventID eventID;
+ int progressTotal;
+ int progressDone;
+ DeferredEvent(EventID id, int total, int done) : eventID(id), progressTotal(total), progressDone(done) { }
+ };
DOMApplicationCache* m_domApplicationCache;
DocumentLoader* m_documentLoader;
bool m_defersEvents; // Events are deferred until after document onload.
- Vector<EventID> m_deferredEvents;
+ Vector<DeferredEvent> m_deferredEvents;
+
+ void dispatchDOMEvent(EventID, int progressTotal, int progressDone);
#if PLATFORM(CHROMIUM)
friend class ApplicationCacheHostInternal;
OwnPtr<ApplicationCacheHostInternal> m_internal;
+ ApplicationCache* applicationCache() const { return 0; } // FIXME: Implement for Chromium Web Inspector Support.
#else
friend class ApplicationCacheGroup;
friend class ApplicationCacheStorage;
diff --git a/WebCore/loader/appcache/ApplicationCacheStorage.cpp b/WebCore/loader/appcache/ApplicationCacheStorage.cpp
index 59232a5..9a11307 100644
--- a/WebCore/loader/appcache/ApplicationCacheStorage.cpp
+++ b/WebCore/loader/appcache/ApplicationCacheStorage.cpp
@@ -999,7 +999,7 @@ bool ApplicationCacheStorage::storeCopyOfCache(const String& cacheDirectory, App
}
// Now create a new cache group.
- OwnPtr<ApplicationCacheGroup> groupCopy(new ApplicationCacheGroup(cache->group()->manifestURL(), true));
+ OwnPtr<ApplicationCacheGroup> groupCopy(adoptPtr(new ApplicationCacheGroup(cache->group()->manifestURL(), true)));
groupCopy->setNewestCache(cacheCopy);
diff --git a/WebCore/make-export-file-generator b/WebCore/make-export-file-generator
new file mode 100755
index 0000000..7ee14c9
--- /dev/null
+++ b/WebCore/make-export-file-generator
@@ -0,0 +1,57 @@
+#!/usr/bin/env ruby
+
+# Copyright (C) 2010 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+input_file = ARGV[0]
+output_file = ARGV[1]
+
+require 'erb'
+
+def line_for_output line
+ return line.chomp if line =~ /#/
+ " printf(\"#{line.chomp}\\n\");"
+end
+
+TEMPLATE = <<-EOF
+#include "config.h"
+#include <stdio.h>
+
+int main(int, char**)
+{
+<%- input.each_line do |line| -%>
+<%= line_for_output line %>
+<%- end -%>
+
+ return 0;
+}
+EOF
+
+File.open(output_file, "w") do |output|
+ File.open(input_file) do |input|
+ renderer = ERB.new(TEMPLATE, 0, "-")
+ output << renderer.result(binding)
+ end
+end
+
+STDERR.puts "Wrote output to #{output_file}"
diff --git a/WebCore/mathml/MathMLElement.cpp b/WebCore/mathml/MathMLElement.cpp
index b93ff9f..30d02da 100644
--- a/WebCore/mathml/MathMLElement.cpp
+++ b/WebCore/mathml/MathMLElement.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved.
* Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 François Sausset (sausset@gmail.com). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -46,6 +47,30 @@ PassRefPtr<MathMLElement> MathMLElement::create(const QualifiedName& tagName, Do
{
return adoptRef(new MathMLElement(tagName, document));
}
+
+bool MathMLElement::mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const
+{
+ if (attrName == MathMLNames::mathcolorAttr || attrName == MathMLNames::mathbackgroundAttr) {
+ result = eMathML;
+ return false;
+ }
+ return StyledElement::mapToEntry(attrName, result);
+}
+
+void MathMLElement::parseMappedAttribute(Attribute* attr)
+{
+ if (attr->name() == MathMLNames::mathbackgroundAttr)
+ addCSSProperty(attr, CSSPropertyBackgroundColor, attr->value());
+ else if (attr->name() == MathMLNames::mathcolorAttr)
+ addCSSProperty(attr, CSSPropertyColor, attr->value());
+ else if (attr->name() == MathMLNames::mathsizeAttr) {
+ // The following three values of mathsize are handled in WebCore/css/mathml.css
+ if (attr->value() != "normal" && attr->value() != "small" && attr->value() != "big")
+ addCSSProperty(attr, CSSPropertyFontSize, attr->value());
+ }
+ else
+ StyledElement::parseMappedAttribute(attr);
+}
}
diff --git a/WebCore/mathml/MathMLElement.h b/WebCore/mathml/MathMLElement.h
index 46cd7fd..7678f26 100644
--- a/WebCore/mathml/MathMLElement.h
+++ b/WebCore/mathml/MathMLElement.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved.
* Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 François Sausset (sausset@gmail.com). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -41,6 +42,8 @@ protected:
private:
virtual bool isMathMLElement() const { return true; }
+ virtual bool mapToEntry(const QualifiedName&, MappedAttributeEntry&) const;
+ virtual void parseMappedAttribute(Attribute*);
};
}
diff --git a/WebCore/mathml/RenderMathMLFraction.cpp b/WebCore/mathml/RenderMathMLFraction.cpp
index 811c230..cd0681d 100644
--- a/WebCore/mathml/RenderMathMLFraction.cpp
+++ b/WebCore/mathml/RenderMathMLFraction.cpp
@@ -168,7 +168,7 @@ void RenderMathMLFraction::paint(PaintInfo& info, int tx, int ty)
info.context->setStrokeThickness(static_cast<float>(m_lineThickness));
info.context->setStrokeStyle(SolidStroke);
- info.context->setStrokeColor(Color(0, 0, 0), sRGBColorSpace);
+ info.context->setStrokeColor(style()->visitedDependentColor(CSSPropertyColor), sRGBColorSpace);
info.context->drawLine(IntPoint(tx, ty), IntPoint(tx + offsetWidth(), ty));
diff --git a/WebCore/mathml/RenderMathMLSquareRoot.cpp b/WebCore/mathml/RenderMathMLSquareRoot.cpp
index 6802176..be62f57 100644
--- a/WebCore/mathml/RenderMathMLSquareRoot.cpp
+++ b/WebCore/mathml/RenderMathMLSquareRoot.cpp
@@ -117,7 +117,7 @@ void RenderMathMLSquareRoot::paint(PaintInfo& info, int tx, int ty)
info.context->setStrokeThickness(gRadicalLineThickness * style()->fontSize());
info.context->setStrokeStyle(SolidStroke);
- info.context->setStrokeColor(style()->visitedDependentColor(CSSPropertyColor), sRGBColorSpace);
+ info.context->setStrokeColor(style()->visitedDependentColor(CSSPropertyColor), DeviceColorSpace);
info.context->setLineJoin(MiterJoin);
info.context->setMiterLimit(style()->fontSize());
diff --git a/WebCore/mathml/mathattrs.in b/WebCore/mathml/mathattrs.in
index df2329a..55a25ed 100644
--- a/WebCore/mathml/mathattrs.in
+++ b/WebCore/mathml/mathattrs.in
@@ -6,6 +6,8 @@ attrsNullNamespace
close
denomalign
linethickness
+mathbackground
+mathcolor
mathsize
numalign
open
diff --git a/WebCore/mathml/mathtags.in b/WebCore/mathml/mathtags.in
index e9cc4ad..5bb369a 100644
--- a/WebCore/mathml/mathtags.in
+++ b/WebCore/mathml/mathtags.in
@@ -18,3 +18,10 @@ mo interfaceName=MathMLTextElement
mtext interfaceName=MathMLTextElement
msub interfaceName=MathMLElement
msup interfaceName=MathMLElement
+
+#if 0 // Curently only for MathMLNames used by HTMLTreeBuilder.
+ms
+mglyph
+malignmark
+annotation-xml
+#endif
diff --git a/WebCore/notifications/Notification.cpp b/WebCore/notifications/Notification.cpp
index 3684245..c1edab4 100644
--- a/WebCore/notifications/Notification.cpp
+++ b/WebCore/notifications/Notification.cpp
@@ -52,7 +52,7 @@ Notification::Notification(const KURL& url, ScriptExecutionContext* context, Exc
, m_presenter(provider)
{
ASSERT(m_presenter);
- if (m_presenter->checkPermission(context->url()) != NotificationPresenter::PermissionAllowed) {
+ if (m_presenter->checkPermission(context) != NotificationPresenter::PermissionAllowed) {
ec = SECURITY_ERR;
return;
}
@@ -73,7 +73,7 @@ Notification::Notification(const NotificationContents& contents, ScriptExecution
, m_presenter(provider)
{
ASSERT(m_presenter);
- if (m_presenter->checkPermission(context->url()) != NotificationPresenter::PermissionAllowed) {
+ if (m_presenter->checkPermission(context) != NotificationPresenter::PermissionAllowed) {
ec = SECURITY_ERR;
return;
}
diff --git a/WebCore/notifications/NotificationCenter.cpp b/WebCore/notifications/NotificationCenter.cpp
index 8089d87..f9672ad 100644
--- a/WebCore/notifications/NotificationCenter.cpp
+++ b/WebCore/notifications/NotificationCenter.cpp
@@ -49,14 +49,20 @@ int NotificationCenter::checkPermission()
{
if (!presenter())
return NotificationPresenter::PermissionDenied;
- return m_notificationPresenter->checkPermission(m_scriptExecutionContext->url());
+ return m_notificationPresenter->checkPermission(m_scriptExecutionContext);
}
void NotificationCenter::requestPermission(PassRefPtr<VoidCallback> callback)
{
if (!presenter())
return;
- m_notificationPresenter->requestPermission(m_scriptExecutionContext->securityOrigin(), callback);
+ m_notificationPresenter->requestPermission(m_scriptExecutionContext, callback);
+}
+
+void NotificationCenter::disconnectFrame()
+{
+ m_notificationPresenter->cancelRequestsForPermission(m_scriptExecutionContext);
+ m_notificationPresenter = 0;
}
} // namespace WebCore
diff --git a/WebCore/notifications/NotificationCenter.h b/WebCore/notifications/NotificationCenter.h
index ce20630..349e8a4 100644
--- a/WebCore/notifications/NotificationCenter.h
+++ b/WebCore/notifications/NotificationCenter.h
@@ -77,7 +77,7 @@ namespace WebCore {
int checkPermission();
void requestPermission(PassRefPtr<VoidCallback> callback);
- void disconnectFrame() { m_notificationPresenter = 0; }
+ void disconnectFrame();
private:
NotificationCenter(ScriptExecutionContext*, NotificationPresenter*);
diff --git a/WebCore/notifications/NotificationPresenter.h b/WebCore/notifications/NotificationPresenter.h
index 193eb2b..e3e7ee2 100644
--- a/WebCore/notifications/NotificationPresenter.h
+++ b/WebCore/notifications/NotificationPresenter.h
@@ -41,7 +41,7 @@ namespace WebCore {
class Document;
class Notification;
class KURL;
- class SecurityOrigin;
+ class ScriptExecutionContext;
class String;
class NotificationPresenter {
@@ -67,12 +67,15 @@ namespace WebCore {
virtual void notificationObjectDestroyed(Notification*) = 0;
// Requests user permission to show desktop notifications from a particular
- // origin. The callback parameter should be run when the user has
+ // script context. The callback parameter should be run when the user has
// made a decision.
- virtual void requestPermission(SecurityOrigin*, PassRefPtr<VoidCallback>) = 0;
+ virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<VoidCallback>) = 0;
+
+ // Cancel all outstanding requests for the ScriptExecutionContext
+ virtual void cancelRequestsForPermission(ScriptExecutionContext*) = 0;
// Checks the current level of permission.
- virtual Permission checkPermission(const KURL&) = 0;
+ virtual Permission checkPermission(ScriptExecutionContext*) = 0;
};
} // namespace WebCore
diff --git a/WebCore/page/Chrome.cpp b/WebCore/page/Chrome.cpp
index 0124211..f2e1d9d 100644
--- a/WebCore/page/Chrome.cpp
+++ b/WebCore/page/Chrome.cpp
@@ -318,16 +318,6 @@ bool Chrome::shouldInterruptJavaScript()
return m_client->shouldInterruptJavaScript();
}
-void Chrome::registerProtocolHandler(const String& scheme, const String& baseURL, const String& url, const String& title)
-{
- m_client->registerProtocolHandler(scheme, baseURL, url, title);
-}
-
-void Chrome::registerContentHandler(const String& mimeType, const String& baseURL, const String& url, const String& title)
-{
- m_client->registerContentHandler(mimeType, baseURL, url, title);
-}
-
IntRect Chrome::windowResizerRect() const
{
return m_client->windowResizerRect();
diff --git a/WebCore/page/Chrome.h b/WebCore/page/Chrome.h
index 88035a5..27bde83 100644
--- a/WebCore/page/Chrome.h
+++ b/WebCore/page/Chrome.h
@@ -121,9 +121,6 @@ namespace WebCore {
void setStatusbarText(Frame*, const String&);
bool shouldInterruptJavaScript();
- void registerProtocolHandler(const String& scheme, const String& baseURL, const String& url, const String& title);
- void registerContentHandler(const String& mimeType, const String& baseURL, const String& url, const String& title);
-
IntRect windowResizerRect() const;
void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
diff --git a/WebCore/page/ChromeClient.h b/WebCore/page/ChromeClient.h
index 64b9f26..8101c52 100644
--- a/WebCore/page/ChromeClient.h
+++ b/WebCore/page/ChromeClient.h
@@ -125,9 +125,6 @@ namespace WebCore {
virtual bool shouldInterruptJavaScript() = 0;
virtual bool tabsToLinks() const = 0;
- virtual void registerProtocolHandler(const String&, const String&, const String&, const String&) { }
- virtual void registerContentHandler(const String&, const String&, const String&, const String&) { }
-
virtual IntRect windowResizerRect() const = 0;
// Methods used by HostWindow.
@@ -143,6 +140,7 @@ namespace WebCore {
// End methods used by HostWindow.
virtual void scrollbarsModeDidChange() const = 0;
+ virtual bool shouldMissingPluginMessageBeButton() const { return false; }
virtual void missingPluginButtonClicked(Element*) const { }
virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags) = 0;
diff --git a/WebCore/page/DOMTimer.cpp b/WebCore/page/DOMTimer.cpp
index eb7f84e..f9178c9 100644
--- a/WebCore/page/DOMTimer.cpp
+++ b/WebCore/page/DOMTimer.cpp
@@ -136,17 +136,18 @@ void DOMTimer::fired()
}
// Delete timer before executing the action for one-shot timers.
- ScheduledAction* action = m_action.release();
+ OwnPtr<ScheduledAction> action = m_action.release();
// No access to member variables after this point.
delete this;
action->execute(context);
+
#if ENABLE(INSPECTOR)
if (InspectorTimelineAgent* timelineAgent = InspectorTimelineAgent::retrieve(context))
timelineAgent->didFireTimer();
#endif
- delete action;
+
timerNestingLevel = 0;
}
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index 6ecde3c..18eef41 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -78,8 +78,9 @@
#include "SuddenTermination.h"
#include "WebKitPoint.h"
#include <algorithm>
-#include <wtf/text/CString.h>
+#include <wtf/CurrentTime.h>
#include <wtf/MathExtras.h>
+#include <wtf/text/CString.h>
using std::min;
using std::max;
@@ -1444,7 +1445,11 @@ bool DOMWindow::removeEventListener(const AtomicString& eventType, EventListener
void DOMWindow::dispatchLoadEvent()
{
+ if (m_frame)
+ m_frame->loader()->frameLoadTimeline()->loadEventStart = currentTime();
dispatchEvent(Event::create(eventNames().loadEvent, false, false), document());
+ if (m_frame)
+ m_frame->loader()->frameLoadTimeline()->loadEventEnd = currentTime();
// For load events, send a separate load event to the enclosing frame only.
// This is a DOM extension and is independent of bubbling/capturing rules of
diff --git a/WebCore/page/DOMWindow.idl b/WebCore/page/DOMWindow.idl
index 20eab8b..f3cf9fe 100644
--- a/WebCore/page/DOMWindow.idl
+++ b/WebCore/page/DOMWindow.idl
@@ -305,6 +305,7 @@ module window {
attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchend;
attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchcancel;
+ attribute [Conditional=DEVICE_ORIENTATION] DeviceOrientationEventConstructor DeviceOrientationEvent;
attribute [Conditional=DEVICE_ORIENTATION] EventListener ondeviceorientation;
// EventTarget interface
@@ -552,11 +553,11 @@ module window {
attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
#endif
- attribute PluginConstructor Plugin;
- attribute PluginArrayConstructor PluginArray;
+ attribute DOMPluginConstructor Plugin;
+ attribute DOMPluginArrayConstructor PluginArray;
- attribute MimeTypeConstructor MimeType;
- attribute MimeTypeArrayConstructor MimeTypeArray;
+ attribute DOMMimeTypeConstructor MimeType;
+ attribute DOMMimeTypeArrayConstructor MimeTypeArray;
attribute ClientRectConstructor ClientRect;
attribute ClientRectListConstructor ClientRectList;
@@ -571,6 +572,7 @@ module window {
attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
+ attribute [Conditional=VIDEO, EnabledAtRuntime] TimeRangesConstructor TimeRanges;
#if defined(ENABLE_XPATH) && ENABLE_XPATH
attribute XPathEvaluatorConstructor XPathEvaluator;
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
index 9fde92f..08b8257 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -266,7 +266,7 @@ void EventHandler::selectClosestWordFromMouseEvent(const MouseEventWithHitTestRe
}
if (m_frame->shouldChangeSelection(newSelection))
- m_frame->selection()->setSelection(newSelection, granularity);
+ m_frame->selection()->setSelection(newSelection, granularity, MakeNonDirectionalSelection);
}
}
@@ -291,7 +291,7 @@ void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit
}
if (m_frame->shouldChangeSelection(newSelection))
- m_frame->selection()->setSelection(newSelection, granularity);
+ m_frame->selection()->setSelection(newSelection, granularity, MakeNonDirectionalSelection);
}
}
@@ -336,7 +336,7 @@ bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR
}
if (m_frame->shouldChangeSelection(newSelection))
- m_frame->selection()->setSelection(newSelection, granularity);
+ m_frame->selection()->setSelection(newSelection, granularity, MakeNonDirectionalSelection);
return true;
}
@@ -403,7 +403,7 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
newSelection = VisibleSelection(visiblePos);
if (m_frame->shouldChangeSelection(newSelection))
- m_frame->selection()->setSelection(newSelection, granularity);
+ m_frame->selection()->setSelection(newSelection, granularity, MakeNonDirectionalSelection);
return true;
}
@@ -640,7 +640,7 @@ void EventHandler::updateSelectionForMouseDrag(Node* targetNode, const IntPoint&
if (m_frame->shouldChangeSelection(newSelection)) {
m_frame->selection()->setIsDirectional(false);
- m_frame->selection()->setSelection(newSelection, m_frame->selectionGranularity());
+ m_frame->selection()->setSelection(newSelection, m_frame->selectionGranularity(), MakeNonDirectionalSelection);
}
}
#endif // ENABLE(DRAG_SUPPORT)
@@ -2052,7 +2052,7 @@ bool EventHandler::sendContextMenuEventForKey()
static const int kContextMenuMargin = 1;
-#if OS(WINDOWS)
+#if OS(WINDOWS) && !OS(WINCE)
int rightAligned = ::GetSystemMetrics(SM_MENUDROPALIGNMENT);
#else
int rightAligned = 0;
@@ -2800,7 +2800,7 @@ void EventHandler::sendResizeEvent()
void EventHandler::sendScrollEvent()
{
setFrameWasScrolledByUser();
- if (m_frame->view())
+ if (m_frame->view() && m_frame->document())
m_frame->document()->dispatchEvent(Event::create(eventNames().scrollEvent, true, false));
}
diff --git a/WebCore/page/EventSource.cpp b/WebCore/page/EventSource.cpp
index 9ccccd7..01af087 100644
--- a/WebCore/page/EventSource.cpp
+++ b/WebCore/page/EventSource.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2009 Ericsson AB
* All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -53,30 +54,45 @@ namespace WebCore {
const unsigned long long EventSource::defaultReconnectDelay = 3000;
-EventSource::EventSource(const String& url, ScriptExecutionContext* context, ExceptionCode& ec)
+inline EventSource::EventSource(const KURL& url, ScriptExecutionContext* context)
: ActiveDOMObject(context, this)
+ , m_url(url)
, m_state(CONNECTING)
+ , m_decoder(TextResourceDecoder::create("text/plain", "UTF-8"))
, m_reconnectTimer(this, &EventSource::reconnectTimerFired)
, m_discardTrailingNewline(false)
, m_failSilently(false)
, m_requestInFlight(false)
, m_reconnectDelay(defaultReconnectDelay)
+ , m_origin(context->securityOrigin()->toString())
{
- if (url.isEmpty() || !(m_url = context->completeURL(url)).isValid()) {
+}
+
+PassRefPtr<EventSource> EventSource::create(const String& url, ScriptExecutionContext* context, ExceptionCode& ec)
+{
+ if (url.isEmpty()) {
ec = SYNTAX_ERR;
- return;
+ return 0;
}
- // FIXME: should support cross-origin requests
- if (!scriptExecutionContext()->securityOrigin()->canRequest(m_url)) {
+
+ KURL fullURL = context->completeURL(url);
+ if (!fullURL.isValid()) {
+ ec = SYNTAX_ERR;
+ return 0;
+ }
+
+ // FIXME: Should support at least some cross-origin requests.
+ if (!context->securityOrigin()->canRequest(fullURL)) {
ec = SECURITY_ERR;
- return;
+ return 0;
}
- m_origin = scriptExecutionContext()->securityOrigin()->toString();
- m_decoder = TextResourceDecoder::create("text/plain", "UTF-8");
+ RefPtr<EventSource> source = adoptRef(new EventSource(fullURL, context));
- setPendingActivity(this);
- connect();
+ source->setPendingActivity(source.get());
+ source->connect();
+
+ return source.release();
}
EventSource::~EventSource()
diff --git a/WebCore/page/EventSource.h b/WebCore/page/EventSource.h
index d0d45cb..ffed592 100644
--- a/WebCore/page/EventSource.h
+++ b/WebCore/page/EventSource.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2009 Ericsson AB
* All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -35,15 +36,10 @@
#if ENABLE(EVENTSOURCE)
#include "ActiveDOMObject.h"
-#include "AtomicStringHash.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>
@@ -56,7 +52,7 @@ namespace WebCore {
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)); }
+ static PassRefPtr<EventSource> create(const String& url, ScriptExecutionContext*, ExceptionCode&);
virtual ~EventSource();
static const unsigned long long defaultReconnectDelay;
@@ -86,17 +82,17 @@ namespace WebCore {
virtual void stop();
private:
- EventSource(const String& url, ScriptExecutionContext* context, ExceptionCode& ec);
+ EventSource(const KURL&, ScriptExecutionContext*);
virtual void refEventTarget() { ref(); }
virtual void derefEventTarget() { deref(); }
virtual EventTargetData* eventTargetData();
virtual EventTargetData* ensureEventTargetData();
- virtual void didReceiveResponse(const ResourceResponse& response);
+ virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char* data, int length);
virtual void didFinishLoading(unsigned long);
- virtual void didFail(const ResourceError& error);
+ virtual void didFail(const ResourceError&);
virtual void didFailRedirectCheck();
void connect();
diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index 5ae666e..46917fd 100644
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -95,15 +95,13 @@
#include "runtime_root.h"
#endif
-#if ENABLE(MATHML)
#include "MathMLNames.h"
-#endif
+#include "SVGNames.h"
+#include "XLinkNames.h"
#if ENABLE(SVG)
#include "SVGDocument.h"
#include "SVGDocumentExtensions.h"
-#include "SVGNames.h"
-#include "XLinkNames.h"
#endif
#if ENABLE(TILED_BACKING_STORE)
@@ -161,23 +159,16 @@ inline Frame::Frame(Page* page, HTMLFrameOwnerElement* ownerElement, FrameLoader
HTMLNames::init();
QualifiedName::init();
MediaFeatureNames::init();
-
-#if ENABLE(SVG)
SVGNames::init();
XLinkNames::init();
-#endif
+ MathMLNames::init();
+ XMLNSNames::init();
+ XMLNames::init();
#if ENABLE(WML)
WMLNames::init();
#endif
-#if ENABLE(MATHML)
- MathMLNames::init();
-#endif
-
- XMLNSNames::init();
- XMLNames::init();
-
if (!ownerElement) {
#if ENABLE(TILED_BACKING_STORE)
// Top level frame only for now.
@@ -695,6 +686,9 @@ void Frame::injectUserScriptsForWorld(DOMWrapperWorld* world, const UserScriptVe
unsigned count = userScripts.size();
for (unsigned i = 0; i < count; ++i) {
UserScript* script = userScripts[i].get();
+ if (script->injectedFrames() == InjectInTopFrameOnly && ownerElement())
+ continue;
+
if (script->injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(doc->url(), script->whitelist(), script->blacklist()))
m_script.evaluateInWorld(ScriptSourceCode(script->source(), script->url()), world);
}
@@ -1603,13 +1597,15 @@ IntRect Frame::tiledBackingStoreVisibleRect()
String Frame::layerTreeAsText() const
{
#if USE(ACCELERATED_COMPOSITING)
+ document()->updateLayout();
+
if (!contentRenderer())
return String();
GraphicsLayer* rootLayer = contentRenderer()->compositor()->rootPlatformLayer();
if (!rootLayer)
return String();
-
+
return rootLayer->layerTreeAsText();
#else
return String();
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index f43fae5..defb34a 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -284,11 +284,11 @@ void FrameView::detachCustomScrollbars()
return;
Scrollbar* horizontalBar = horizontalScrollbar();
- if (horizontalBar && horizontalBar->isCustomScrollbar() && !toRenderScrollbar(horizontalBar)->owningRenderer()->isRenderPart())
+ if (horizontalBar && horizontalBar->isCustomScrollbar())
setHasHorizontalScrollbar(false);
Scrollbar* verticalBar = verticalScrollbar();
- if (verticalBar && verticalBar->isCustomScrollbar() && !toRenderScrollbar(verticalBar)->owningRenderer()->isRenderPart())
+ if (verticalBar && verticalBar->isCustomScrollbar())
setHasVerticalScrollbar(false);
if (m_scrollCorner) {
@@ -486,10 +486,6 @@ void FrameView::updateCompositingLayers()
// This call will make sure the cached hasAcceleratedCompositing is updated from the pref
view->compositor()->cacheAcceleratedCompositingFlags();
-
- if (!view->usesCompositing())
- return;
-
view->compositor()->updateCompositingLayers(CompositingUpdateAfterLayoutOrStyleChange);
}
@@ -516,7 +512,7 @@ void FrameView::enterCompositingMode()
{
#if USE(ACCELERATED_COMPOSITING)
if (RenderView* view = m_frame->contentRenderer())
- return view->compositor()->enableCompositingMode();
+ view->compositor()->enableCompositingMode();
#endif
}
@@ -1148,8 +1144,7 @@ void FrameView::repaintFixedElementsAfterScrolling()
root->updateWidgetPositions();
root->layer()->updateRepaintRectsAfterScroll();
#if USE(ACCELERATED_COMPOSITING)
- if (root->usesCompositing())
- root->compositor()->updateCompositingLayers(CompositingUpdateOnScroll);
+ root->compositor()->updateCompositingLayers(CompositingUpdateOnScroll);
#endif
}
}
@@ -1708,7 +1703,7 @@ IntRect FrameView::windowClipRect(bool clipToContents) const
// Set our clip rect to be our contents.
IntRect clipRect = contentsToWindow(visibleContentRect(!clipToContents));
- if (!m_frame || !m_frame->document()->ownerElement())
+ if (!m_frame || !m_frame->document() || !m_frame->document()->ownerElement())
return clipRect;
// Take our owner element and get the clip rect from the enclosing layer.
diff --git a/WebCore/page/Navigation.cpp b/WebCore/page/Navigation.cpp
index 828f87e..efda924 100644
--- a/WebCore/page/Navigation.cpp
+++ b/WebCore/page/Navigation.cpp
@@ -33,7 +33,9 @@
#if ENABLE(WEB_TIMING)
+#include "DocumentLoader.h"
#include "Frame.h"
+#include "FrameLoaderTypes.h"
namespace WebCore {
@@ -55,9 +57,21 @@ void Navigation::disconnectFrame()
unsigned short Navigation::type() const
{
if (!m_frame)
- return 0;
+ return Navigate;
- return 0; // FIXME
+ DocumentLoader* documentLoader = m_frame->loader()->documentLoader();
+ if (!documentLoader)
+ return Navigate;
+
+ WebCore::NavigationType navigationType = documentLoader->triggeringAction().type();
+ switch (navigationType) {
+ case NavigationTypeReload:
+ return Reload;
+ case NavigationTypeBackForward:
+ return BackForward;
+ default:
+ return Navigate;
+ }
}
unsigned short Navigation::redirectCount() const
diff --git a/WebCore/page/Navigation.h b/WebCore/page/Navigation.h
index 5e0f7e6..85c7b55 100644
--- a/WebCore/page/Navigation.h
+++ b/WebCore/page/Navigation.h
@@ -51,6 +51,13 @@ public:
unsigned short redirectCount() const;
private:
+ // Keep in sync with what's in the .idl file.
+ enum NavigationType {
+ Navigate = 0,
+ Reload = 1,
+ BackForward = 2,
+ };
+
Navigation(Frame*);
Frame* m_frame;
diff --git a/WebCore/page/Navigation.idl b/WebCore/page/Navigation.idl
index 3ec20ad..b0227f3 100644
--- a/WebCore/page/Navigation.idl
+++ b/WebCore/page/Navigation.idl
@@ -32,13 +32,9 @@ module window {
// See: http://dev.w3.org/2006/webapi/WebTiming/
interface [Conditional=WEB_TIMING, OmitConstructor] Navigation {
- const unsigned short NAVIGATION_OTHER = 0;
- const unsigned short NAVIGATION_LINK = 1;
- const unsigned short NAVIGATION_FORWARD_BACK = 2;
- const unsigned short NAVIGATION_BROWSER = 3;
- const unsigned short NAVIGATION_NEW_WINDOW = 4;
- const unsigned short NAVIGATION_RELOAD = 5;
- const unsigned short NAVIGATION_FRAME = 6;
+ const unsigned short NAVIGATE = 0;
+ const unsigned short RELOAD = 1;
+ const unsigned short BACK_FORWARD = 2;
readonly attribute unsigned short type;
readonly attribute unsigned short redirectCount;
diff --git a/WebCore/page/Navigator.cpp b/WebCore/page/Navigator.cpp
index bb07911..5390fc9 100644
--- a/WebCore/page/Navigator.cpp
+++ b/WebCore/page/Navigator.cpp
@@ -25,18 +25,16 @@
#include "Chrome.h"
#include "CookieJar.h"
-#include "ExceptionCode.h"
+#include "DOMMimeTypeArray.h"
+#include "DOMPluginArray.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
#include "Geolocation.h"
-#include "KURL.h"
#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"
@@ -122,17 +120,17 @@ String Navigator::userAgent() const
return m_frame->loader()->userAgent(m_frame->document()->url());
}
-PluginArray* Navigator::plugins() const
+DOMPluginArray* Navigator::plugins() const
{
if (!m_plugins)
- m_plugins = PluginArray::create(m_frame);
+ m_plugins = DOMPluginArray::create(m_frame);
return m_plugins.get();
}
-MimeTypeArray* Navigator::mimeTypes() const
+DOMMimeTypeArray* Navigator::mimeTypes() const
{
if (!m_mimeTypes)
- m_mimeTypes = MimeTypeArray::create(m_frame);
+ m_mimeTypes = DOMMimeTypeArray::create(m_frame);
return m_mimeTypes.get();
}
@@ -211,93 +209,4 @@ void Navigator::getStorageUpdates()
}
#endif
-static bool verifyCustomHandlerURL(const String& baseURL, const String& url, ExceptionCode& ec)
-{
- // The specification requires that it is a SYNTAX_ERR if the the "%s" token is not present.
- static const char token[] = "%s";
- int index = url.find(token);
- if (-1 == index) {
- ec = SYNTAX_ERR;
- return false;
- }
-
- // It is also a SYNTAX_ERR if the custom handler URL, as created by removing
- // the "%s" token and prepending the base url, does not resolve.
- String newURL = url;
- newURL.remove(index, sizeof(token) / sizeof(token[0]));
-
- KURL base(ParsedURLString, baseURL);
- KURL kurl(base, newURL);
-
- if (kurl.isEmpty() || !kurl.isValid()) {
- ec = SYNTAX_ERR;
- return false;
- }
-
- return true;
-}
-
-static bool verifyProtocolHandlerScheme(const String& scheme, ExceptionCode& ec)
-{
- // It is a SECURITY_ERR for these schemes to be handled by a custom handler.
- if (equalIgnoringCase(scheme, "http") || equalIgnoringCase(scheme, "https") || equalIgnoringCase(scheme, "file")) {
- ec = SECURITY_ERR;
- return false;
- }
- return true;
-}
-
-void Navigator::registerProtocolHandler(const String& scheme, const String& url, const String& title, ExceptionCode& ec)
-{
- if (!verifyProtocolHandlerScheme(scheme, ec))
- return;
-
- if (!m_frame)
- return;
-
- Document* document = m_frame->document();
- if (!document)
- return;
-
- String baseURL = document->baseURL().baseAsString();
-
- if (!verifyCustomHandlerURL(baseURL, url, ec))
- return;
-
- if (Page* page = m_frame->page())
- page->chrome()->registerProtocolHandler(scheme, baseURL, url, m_frame->displayStringModifiedByEncoding(title));
-}
-
-static bool verifyProtocolHandlerMimeType(const String& type, ExceptionCode& ec)
-{
- // It is a SECURITY_ERR for these mime types to be assigned to a custom
- // handler.
- if (equalIgnoringCase(type, "text/html") || equalIgnoringCase(type, "text/css") || equalIgnoringCase(type, "application/x-javascript")) {
- ec = SECURITY_ERR;
- return false;
- }
- return true;
-}
-
-void Navigator::registerContentHandler(const String& mimeType, const String& url, const String& title, ExceptionCode& ec)
-{
- if (!verifyProtocolHandlerMimeType(mimeType, ec))
- return;
-
- if (!m_frame)
- return;
-
- Document* document = m_frame->document();
- if (!document)
- return;
-
- String baseURL = document->baseURL().baseAsString();
-
- if (!verifyCustomHandlerURL(baseURL, url, ec))
- return;
-
- if (Page* page = m_frame->page())
- page->chrome()->registerContentHandler(mimeType, baseURL, url, m_frame->displayStringModifiedByEncoding(title));
-}
-
} // namespace WebCore
diff --git a/WebCore/page/Navigator.h b/WebCore/page/Navigator.h
index c6acfd5..3380c9c 100644
--- a/WebCore/page/Navigator.h
+++ b/WebCore/page/Navigator.h
@@ -28,18 +28,21 @@
namespace WebCore {
+ class DOMMimeTypeArray;
+ class DOMPluginArray;
class Frame;
class Geolocation;
- class MimeTypeArray;
class PluginData;
+<<<<<<< HEAD
class PluginArray;
#if PLATFORM(ANDROID)
class ApplicationInstalledCallback;
class Connection;
#endif
-
- typedef int ExceptionCode;
+=======
+ class String;
+>>>>>>> webkit.org at r63173
class Navigator : public NavigatorBase, public RefCounted<Navigator> {
public:
@@ -51,8 +54,8 @@ namespace WebCore {
String appVersion() const;
String language() const;
- PluginArray* plugins() const;
- MimeTypeArray* mimeTypes() const;
+ DOMPluginArray* plugins() const;
+ DOMMimeTypeArray* mimeTypes() const;
bool cookieEnabled() const;
bool javaEnabled() const;
@@ -76,14 +79,11 @@ namespace WebCore {
void getStorageUpdates();
#endif
- void registerProtocolHandler(const String& scheme, const String& url, const String& title, ExceptionCode& ec);
- void registerContentHandler(const String& mimeType, const String& url, const String& title, ExceptionCode& ec);
-
private:
Navigator(Frame*);
Frame* m_frame;
- mutable RefPtr<PluginArray> m_plugins;
- mutable RefPtr<MimeTypeArray> m_mimeTypes;
+ mutable RefPtr<DOMPluginArray> m_plugins;
+ mutable RefPtr<DOMMimeTypeArray> m_mimeTypes;
mutable RefPtr<Geolocation> m_geolocation;
#if PLATFORM(ANDROID)
mutable RefPtr<Connection> m_connection;
diff --git a/WebCore/page/Navigator.idl b/WebCore/page/Navigator.idl
index 8eae9d6..5699d86 100644
--- a/WebCore/page/Navigator.idl
+++ b/WebCore/page/Navigator.idl
@@ -29,8 +29,8 @@ module window {
readonly attribute DOMString language;
readonly attribute DOMString userAgent;
readonly attribute DOMString platform;
- readonly attribute PluginArray plugins;
- readonly attribute MimeTypeArray mimeTypes;
+ readonly attribute DOMPluginArray plugins;
+ readonly attribute DOMMimeTypeArray mimeTypes;
readonly attribute DOMString product;
readonly attribute DOMString productSub;
readonly attribute DOMString vendor;
@@ -57,11 +57,6 @@ module window {
#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
void getStorageUpdates();
#endif
-
- void registerProtocolHandler(in DOMString scheme, in DOMString url, in DOMString title)
- raises(DomException);
- void registerContentHandler(in DOMString mimeType, in DOMString url, in DOMString title)
- raises(DomException);
};
}
diff --git a/WebCore/page/Page.cpp b/WebCore/page/Page.cpp
index d5074aa..5d023f5 100644
--- a/WebCore/page/Page.cpp
+++ b/WebCore/page/Page.cpp
@@ -6,7 +6,6 @@
* 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
@@ -21,6 +20,7 @@
#include "config.h"
#include "Page.h"
+#include "BackForwardController.h"
#include "BackForwardList.h"
#include "Base64.h"
#include "CSSStyleSelector.h"
@@ -29,7 +29,7 @@
#include "ContextMenuClient.h"
#include "ContextMenuController.h"
#include "DOMWindow.h"
-#include "DeviceOrientation.h"
+#include "DeviceOrientationController.h"
#include "DragController.h"
#include "EditorClient.h"
#include "Event.h"
@@ -85,8 +85,13 @@
#include "GeolocationController.h"
#endif
+<<<<<<< HEAD
#if PLATFORM(ANDROID) && ENABLE(APPLICATION_INSTALLED)
#include "PackageNotifier.h"
+=======
+#if ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+#include "InspectorApplicationCacheAgent.h"
+>>>>>>> webkit.org at r63173
#endif
namespace WebCore {
@@ -101,11 +106,19 @@ static void networkStateChanged()
{
Vector<RefPtr<Frame> > frames;
+#if ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+ bool isNowOnline = networkStateNotifier().onLine();
+#endif
+
// Get all the frames of all the pages in all the page groups
HashSet<Page*>::iterator end = allPages->end();
for (HashSet<Page*>::iterator it = allPages->begin(); it != end; ++it) {
for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree()->traverseNext())
frames.append(frame);
+#if ENABLE(INSPECTOR) && ENABLE(OFFLINE_WEB_APPLICATIONS)
+ if (InspectorApplicationCacheAgent* applicationCacheAgent = (*it)->inspectorController()->applicationCacheAgent())
+ applicationCacheAgent->updateNetworkState(isNowOnline);
+#endif
}
AtomicString eventName = networkStateNotifier().onLine() ? eventNames().onlineEvent : eventNames().offlineEvent;
@@ -113,6 +126,7 @@ static void networkStateChanged()
frames[i]->document()->dispatchWindowEvent(Event::create(eventName, false, false));
}
+<<<<<<< HEAD
#if PLATFORM(ANDROID) && ENABLE(APPLICATION_INSTALLED)
static void onPackageResultAvailable()
{
@@ -125,6 +139,9 @@ static void onPackageResultAvailable()
#endif
Page::Page(ChromeClient* chromeClient, ContextMenuClient* contextMenuClient, EditorClient* editorClient, DragClient* dragClient, InspectorClient* inspectorClient, PluginHalterClient* pluginHalterClient, GeolocationControllerClient* geolocationControllerClient, DeviceOrientationClient* deviceOrientationClient)
+=======
+Page::Page(ChromeClient* chromeClient, ContextMenuClient* contextMenuClient, EditorClient* editorClient, DragClient* dragClient, InspectorClient* inspectorClient, PluginHalterClient* pluginHalterClient, GeolocationControllerClient* geolocationControllerClient, DeviceOrientationClient* deviceOrientationClient, BackForwardControllerClient* backForwardControllerClient)
+>>>>>>> webkit.org at r63173
: m_chrome(new Chrome(this, chromeClient))
, m_dragCaretController(new SelectionController(0, true))
#if ENABLE(DRAG_SUPPORT)
@@ -141,11 +158,11 @@ Page::Page(ChromeClient* chromeClient, ContextMenuClient* contextMenuClient, Edi
, m_geolocationController(new GeolocationController(this, geolocationControllerClient))
#endif
#if ENABLE(DEVICE_ORIENTATION)
- , m_deviceOrientation(new DeviceOrientation(this, deviceOrientationClient))
+ , m_deviceOrientationController(new DeviceOrientationController(this, deviceOrientationClient))
#endif
, m_settings(new Settings(this))
, m_progress(new ProgressTracker)
- , m_backForwardList(BackForwardList::create(this))
+ , m_backForwardController(new BackForwardController(this, backForwardControllerClient))
, m_theme(RenderTheme::themeForPage(this))
, m_editorClient(editorClient)
, m_frameCount(0)
@@ -221,7 +238,7 @@ Page::~Page()
m_inspectorController->inspectedPageDestroyed();
#endif
- m_backForwardList->close();
+ backForwardList()->close();
#ifndef NDEBUG
pageCounter.decrement();
@@ -249,14 +266,14 @@ void Page::setOpenedByDOM()
m_openedByDOM = true;
}
-BackForwardList* Page::backForwardList()
+BackForwardList* Page::backForwardList() const
{
- return m_backForwardList.get();
+ return m_backForwardController->list();
}
bool Page::goBack()
{
- HistoryItem* item = m_backForwardList->backItem();
+ HistoryItem* item = backForwardList()->backItem();
if (item) {
goToItem(item, FrameLoadTypeBack);
@@ -267,7 +284,7 @@ bool Page::goBack()
bool Page::goForward()
{
- HistoryItem* item = m_backForwardList->forwardItem();
+ HistoryItem* item = backForwardList()->forwardItem();
if (item) {
goToItem(item, FrameLoadTypeForward);
@@ -280,9 +297,9 @@ bool Page::canGoBackOrForward(int distance) const
{
if (distance == 0)
return true;
- if (distance > 0 && distance <= m_backForwardList->forwardListCount())
+ if (distance > 0 && distance <= backForwardList()->forwardListCount())
return true;
- if (distance < 0 && -distance <= m_backForwardList->backListCount())
+ if (distance < 0 && -distance <= backForwardList()->backListCount())
return true;
return false;
}
@@ -292,16 +309,16 @@ void Page::goBackOrForward(int distance)
if (distance == 0)
return;
- HistoryItem* item = m_backForwardList->itemAtIndex(distance);
+ HistoryItem* item = backForwardList()->itemAtIndex(distance);
if (!item) {
if (distance > 0) {
- int forwardListCount = m_backForwardList->forwardListCount();
+ int forwardListCount = backForwardList()->forwardListCount();
if (forwardListCount > 0)
- item = m_backForwardList->itemAtIndex(forwardListCount);
+ item = backForwardList()->itemAtIndex(forwardListCount);
} else {
- int backListCount = m_backForwardList->backListCount();
+ int backListCount = backForwardList()->backListCount();
if (backListCount > 0)
- item = m_backForwardList->itemAtIndex(-backListCount);
+ item = backForwardList()->itemAtIndex(-backListCount);
}
}
@@ -335,7 +352,7 @@ void Page::goToItem(HistoryItem* item, FrameLoadType type)
int Page::getHistoryLength()
{
- return m_backForwardList->backListCount() + 1 + m_backForwardList->forwardListCount();
+ return backForwardList()->backListCount() + 1 + backForwardList()->forwardListCount();
}
void Page::setGlobalHistoryItem(HistoryItem* item)
diff --git a/WebCore/page/Page.h b/WebCore/page/Page.h
index b931092..56a25eb 100644
--- a/WebCore/page/Page.h
+++ b/WebCore/page/Page.h
@@ -37,13 +37,15 @@ namespace JSC {
namespace WebCore {
+ class BackForwardController;
+ class BackForwardControllerClient;
class BackForwardList;
class Chrome;
class ChromeClient;
class ContextMenuClient;
class ContextMenuController;
- class DeviceOrientation;
class DeviceOrientationClient;
+ class DeviceOrientationController;
class Document;
class DragClient;
class DragController;
@@ -87,7 +89,7 @@ namespace WebCore {
public:
static void setNeedsReapplyStyles();
- Page(ChromeClient*, ContextMenuClient*, EditorClient*, DragClient*, InspectorClient*, PluginHalterClient*, GeolocationControllerClient*, DeviceOrientationClient*);
+ Page(ChromeClient*, ContextMenuClient*, EditorClient*, DragClient*, InspectorClient*, PluginHalterClient*, GeolocationControllerClient*, DeviceOrientationClient*, BackForwardControllerClient*);
~Page();
RenderTheme* theme() const { return m_theme.get(); };
@@ -106,7 +108,7 @@ namespace WebCore {
bool openedByDOM() const;
void setOpenedByDOM();
- BackForwardList* backForwardList();
+ BackForwardList* backForwardList() const;
// FIXME: The following three methods don't fall under the responsibilities of the Page object
// They seem to fit a hypothetical Page-controller object that would be akin to the
@@ -148,7 +150,7 @@ namespace WebCore {
GeolocationController* geolocationController() const { return m_geolocationController.get(); }
#endif
#if ENABLE(DEVICE_ORIENTATION)
- DeviceOrientation* deviceOrientation() const { return m_deviceOrientation.get(); }
+ DeviceOrientationController* deviceOrientationController() const { return m_deviceOrientationController.get(); }
#endif
Settings* settings() const { return m_settings.get(); }
ProgressTracker* progress() const { return m_progress.get(); }
@@ -265,12 +267,12 @@ namespace WebCore {
OwnPtr<GeolocationController> m_geolocationController;
#endif
#if ENABLE(DEVICE_ORIENTATION)
- OwnPtr<DeviceOrientation> m_deviceOrientation;
+ OwnPtr<DeviceOrientationController> m_deviceOrientationController;
#endif
OwnPtr<Settings> m_settings;
OwnPtr<ProgressTracker> m_progress;
- RefPtr<BackForwardList> m_backForwardList;
+ OwnPtr<BackForwardController> m_backForwardController;
RefPtr<Frame> m_mainFrame;
RefPtr<HistoryItem> m_globalHistoryItem;
diff --git a/WebCore/page/PageGroup.cpp b/WebCore/page/PageGroup.cpp
index f6c746d..b45b9ea 100644
--- a/WebCore/page/PageGroup.cpp
+++ b/WebCore/page/PageGroup.cpp
@@ -213,12 +213,13 @@ IndexedDatabase* PageGroup::indexedDatabase()
}
#endif
-void PageGroup::addUserScriptToWorld(DOMWrapperWorld* world, const String& source, const KURL& url, PassOwnPtr<Vector<String> > whitelist,
- PassOwnPtr<Vector<String> > blacklist, UserScriptInjectionTime injectionTime)
+void PageGroup::addUserScriptToWorld(DOMWrapperWorld* world, const String& source, const KURL& url,
+ PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
+ UserScriptInjectionTime injectionTime, UserContentInjectedFrames injectedFrames)
{
ASSERT_ARG(world, world);
- OwnPtr<UserScript> userScript(new UserScript(source, url, whitelist, blacklist, injectionTime));
+ OwnPtr<UserScript> userScript(new UserScript(source, url, whitelist, blacklist, injectionTime, injectedFrames));
if (!m_userScripts)
m_userScripts.set(new UserScriptMap);
UserScriptVector*& scriptsInWorld = m_userScripts->add(world, 0).first->second;
@@ -227,19 +228,20 @@ void PageGroup::addUserScriptToWorld(DOMWrapperWorld* world, const String& sourc
scriptsInWorld->append(userScript.release());
}
-void PageGroup::addUserStyleSheetToWorld(DOMWrapperWorld* world, const String& source, const KURL& url, PassOwnPtr<Vector<String> > whitelist,
- PassOwnPtr<Vector<String> > blacklist)
+void PageGroup::addUserStyleSheetToWorld(DOMWrapperWorld* world, const String& source, const KURL& url,
+ PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
+ UserContentInjectedFrames injectedFrames)
{
ASSERT_ARG(world, world);
- OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist));
+ OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist, injectedFrames));
if (!m_userStyleSheets)
m_userStyleSheets.set(new UserStyleSheetMap);
UserStyleSheetVector*& styleSheetsInWorld = m_userStyleSheets->add(world, 0).first->second;
if (!styleSheetsInWorld)
styleSheetsInWorld = new UserStyleSheetVector;
styleSheetsInWorld->append(userStyleSheet.release());
-
+
// Clear our cached sheets and have them just reparse.
HashSet<Page*>::const_iterator end = m_pages.end();
for (HashSet<Page*>::const_iterator it = m_pages.begin(); it != end; ++it) {
diff --git a/WebCore/page/PageGroup.h b/WebCore/page/PageGroup.h
index a409494..545df78 100644
--- a/WebCore/page/PageGroup.h
+++ b/WebCore/page/PageGroup.h
@@ -74,20 +74,21 @@ namespace WebCore {
IndexedDatabase* indexedDatabase();
#endif
- void addUserScriptToWorld(DOMWrapperWorld*, const String& source, const KURL&,
+ void addUserScriptToWorld(DOMWrapperWorld*, const String& source, const KURL&,
PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
- UserScriptInjectionTime);
+ UserScriptInjectionTime, UserContentInjectedFrames);
void addUserStyleSheetToWorld(DOMWrapperWorld*, const String& source, const KURL&,
- PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist);
-
+ PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
+ UserContentInjectedFrames);
+
void removeUserScriptFromWorld(DOMWrapperWorld*, const KURL&);
void removeUserStyleSheetFromWorld(DOMWrapperWorld*, const KURL&);
-
+
void removeUserScriptsFromWorld(DOMWrapperWorld*);
void removeUserStyleSheetsFromWorld(DOMWrapperWorld*);
-
+
void removeAllUserContent();
-
+
const UserScriptMap* userScripts() const { return m_userScripts.get(); }
const UserStyleSheetMap* userStyleSheets() const { return m_userStyleSheets.get(); }
diff --git a/WebCore/page/Timing.cpp b/WebCore/page/Timing.cpp
index dcd0fb7..af00441 100644
--- a/WebCore/page/Timing.cpp
+++ b/WebCore/page/Timing.cpp
@@ -52,12 +52,36 @@ void Timing::disconnectFrame()
m_frame = 0;
}
-unsigned long Timing::navigationStart() const
+unsigned long long Timing::navigationStart() const
{
if (!m_frame)
return 0;
- return 0; // FIXME
+ return static_cast<unsigned long long>(m_frame->loader()->frameLoadTimeline()->navigationStart * 1000);
+}
+
+unsigned long long Timing::unloadEventEnd() const
+{
+ if (!m_frame)
+ return 0;
+
+ return static_cast<unsigned long long>(m_frame->loader()->frameLoadTimeline()->unloadEventEnd * 1000);
+}
+
+unsigned long long Timing::loadEventStart() const
+{
+ if (!m_frame)
+ return 0;
+
+ return static_cast<unsigned long long>(m_frame->loader()->frameLoadTimeline()->loadEventStart * 1000);
+}
+
+unsigned long long Timing::loadEventEnd() const
+{
+ if (!m_frame)
+ return 0;
+
+ return static_cast<unsigned long long>(m_frame->loader()->frameLoadTimeline()->loadEventEnd * 1000);
}
} // namespace WebCore
diff --git a/WebCore/page/Timing.h b/WebCore/page/Timing.h
index 7b66d66..47ce478 100644
--- a/WebCore/page/Timing.h
+++ b/WebCore/page/Timing.h
@@ -47,7 +47,10 @@ public:
Frame* frame() const;
void disconnectFrame();
- unsigned long navigationStart() const;
+ unsigned long long navigationStart() const;
+ unsigned long long unloadEventEnd() const;
+ unsigned long long loadEventStart() const;
+ unsigned long long loadEventEnd() const;
private:
Timing(Frame*);
diff --git a/WebCore/page/Timing.idl b/WebCore/page/Timing.idl
index 01b72bc..dbe996e 100644
--- a/WebCore/page/Timing.idl
+++ b/WebCore/page/Timing.idl
@@ -32,8 +32,22 @@ module window {
// See: http://dev.w3.org/2006/webapi/WebTiming/
interface [Conditional=WEB_TIMING, OmitConstructor] Timing {
- readonly attribute unsigned long navigationStart;
// FIXME: Implement remainder of interface.
+ readonly attribute unsigned long long navigationStart;
+ // readonly attribute unsigned long long fetchStart;
+ readonly attribute unsigned long long unloadEventEnd;
+ // readonly attribute unsigned long long redirectStart;
+ // readonly attribute unsigned long long redirectEnd;
+ // readonly attribute unsigned long long domainLookupStart;
+ // readonly attribute unsigned long long domainLookupEnd;
+ // readonly attribute unsigned long long connectStart;
+ // readonly attribute unsigned long long connectEnd;
+ // readonly attribute unsigned long long requestStart;
+ // readonly attribute unsigned long long requestEnd;
+ // readonly attribute unsigned long long responseStart;
+ // readonly attribute unsigned long long responseEnd;
+ readonly attribute unsigned long long loadEventStart;
+ readonly attribute unsigned long long loadEventEnd;
};
}
diff --git a/WebCore/page/UserContentTypes.h b/WebCore/page/UserContentTypes.h
new file mode 100644
index 0000000..d012b8c
--- /dev/null
+++ b/WebCore/page/UserContentTypes.h
@@ -0,0 +1,38 @@
+/*
+ * 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 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 UserContentTypes_h
+#define UserContentTypes_h
+
+#include <wtf/HashMap.h>
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+enum UserContentInjectedFrames { InjectInAllFrames, InjectInTopFrameOnly };
+
+} // namespace WebCore
+
+#endif // UserContentTypes_h
diff --git a/WebCore/page/UserScript.h b/WebCore/page/UserScript.h
index 8b3703f..0652439 100644
--- a/WebCore/page/UserScript.h
+++ b/WebCore/page/UserScript.h
@@ -27,6 +27,7 @@
#define UserScript_h
#include "KURL.h"
+#include "UserContentTypes.h"
#include "UserScriptTypes.h"
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
@@ -38,12 +39,13 @@ class UserScript : public Noncopyable {
public:
UserScript(const String& source, const KURL& url,
PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
- UserScriptInjectionTime injectionTime)
+ UserScriptInjectionTime injectionTime, UserContentInjectedFrames injectedFrames)
: m_source(source)
, m_url(url)
, m_whitelist(whitelist)
, m_blacklist(blacklist)
, m_injectionTime(injectionTime)
+ , m_injectedFrames(injectedFrames)
{
}
@@ -52,15 +54,17 @@ public:
const Vector<String>* whitelist() const { return m_whitelist.get(); }
const Vector<String>* blacklist() const { return m_blacklist.get(); }
UserScriptInjectionTime injectionTime() const { return m_injectionTime; }
-
+ UserContentInjectedFrames injectedFrames() const { return m_injectedFrames; }
+
private:
String m_source;
KURL m_url;
OwnPtr<Vector<String> > m_whitelist;
OwnPtr<Vector<String> > m_blacklist;
UserScriptInjectionTime m_injectionTime;
+ UserContentInjectedFrames m_injectedFrames;
};
} // namespace WebCore
-
+
#endif // UserScript_h
diff --git a/WebCore/page/UserStyleSheet.h b/WebCore/page/UserStyleSheet.h
index 610778f..4c6d708 100644
--- a/WebCore/page/UserStyleSheet.h
+++ b/WebCore/page/UserStyleSheet.h
@@ -27,6 +27,7 @@
#define UserStyleSheet_h
#include "KURL.h"
+#include "UserContentTypes.h"
#include "UserStyleSheetTypes.h"
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
@@ -37,11 +38,13 @@ namespace WebCore {
class UserStyleSheet : public Noncopyable {
public:
UserStyleSheet(const String& source, const KURL& url,
- PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist)
+ PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
+ UserContentInjectedFrames injectedFrames)
: m_source(source)
, m_url(url)
, m_whitelist(whitelist)
, m_blacklist(blacklist)
+ , m_injectedFrames(injectedFrames)
{
}
@@ -49,12 +52,14 @@ public:
const KURL& url() const { return m_url; }
const Vector<String>* whitelist() const { return m_whitelist.get(); }
const Vector<String>* blacklist() const { return m_blacklist.get(); }
+ UserContentInjectedFrames injectedFrames() const { return m_injectedFrames; }
private:
String m_source;
KURL m_url;
OwnPtr<Vector<String> > m_whitelist;
OwnPtr<Vector<String> > m_blacklist;
+ UserContentInjectedFrames m_injectedFrames;
};
} // namespace WebCore
diff --git a/WebCore/page/win/EventHandlerWin.cpp b/WebCore/page/win/EventHandlerWin.cpp
index 5511209..e1d5be9 100644
--- a/WebCore/page/win/EventHandlerWin.cpp
+++ b/WebCore/page/win/EventHandlerWin.cpp
@@ -27,7 +27,6 @@
#include "config.h"
#include "EventHandler.h"
-#include "ClipboardWin.h"
#include "Cursor.h"
#include "FloatPoint.h"
#include "FocusController.h"
@@ -44,6 +43,12 @@
#include "WCDataObject.h"
#include "NotImplemented.h"
+#if OS(WINCE)
+#include "Clipboard.h"
+#else
+#include "ClipboardWin.h"
+#endif
+
namespace WebCore {
const double EventHandler::TextDragDelay = 0.0;
diff --git a/WebCore/page/wince/FrameWince.cpp b/WebCore/page/wince/FrameWince.cpp
index 5ecb579..c806b98 100644
--- a/WebCore/page/wince/FrameWince.cpp
+++ b/WebCore/page/wince/FrameWince.cpp
@@ -28,28 +28,18 @@
#include "Frame.h"
#include "Document.h"
-#include "EditorClient.h"
#include "FloatRect.h"
-#include "FrameLoader.h"
-#include "FrameLoadRequest.h"
#include "FrameView.h"
#include "GraphicsContext.h"
#include "HTMLIFrameElement.h"
#include "HTMLNames.h"
#include "HTMLTableCellElement.h"
#include "KeyboardEvent.h"
-#include "NP_jsobject.h"
-#include "npruntime_impl.h"
#include "Page.h"
-#include "Plugin.h"
-#include "RegularExpression.h"
#include "RenderFrame.h"
-#include "RenderTableCell.h"
+#include "RenderLayer.h"
#include "RenderView.h"
#include "ResourceHandle.h"
-#include "runtime_root.h"
-#include "Settings.h"
-#include "TextResourceDecoder.h"
#include <windows.h>
@@ -85,7 +75,7 @@ void computePageRectsForFrame(Frame* frame, const IntRect& printRect, float head
float ratio = (float)printRect.height() / (float)printRect.width();
- float pageWidth = (float) root->overflowWidth();
+ float pageWidth = (float) root->rightLayoutOverflow();
float pageHeight = pageWidth * ratio;
outPageHeight = (int) pageHeight; // this is the height of the page adjusted by margins
pageHeight -= (headerHeight + footerHeight);
@@ -129,8 +119,8 @@ HBITMAP imageFromSelection(Frame* frame, bool forceBlackText)
FrameView* view = frame->view();
if (view->parent()) {
ir.setLocation(view->parent()->convertChildToSelf(view, ir.location()));
- w = ir.width() * view->scale() + 0.5;
- h = ir.height() * view->scale() + 0.5;
+ w = ir.width() * view->zoomFactor() + 0.5;
+ h = ir.height() * view->zoomFactor() + 0.5;
} else {
ir = view->contentsToWindow(ir);
w = ir.width();
diff --git a/WebCore/platform/CrossThreadCopier.h b/WebCore/platform/CrossThreadCopier.h
index e35a6b3..80805c4 100644
--- a/WebCore/platform/CrossThreadCopier.h
+++ b/WebCore/platform/CrossThreadCopier.h
@@ -81,9 +81,9 @@ namespace WebCore {
template<typename T> struct CrossThreadCopierBase<false, false, PassOwnPtr<T> > {
typedef PassOwnPtr<T> Type;
- static Type copy(const PassOwnPtr<T>& ownPtr)
+ static Type copy(Type ownPtr)
{
- return PassOwnPtr<T>(static_cast<T*>(ownPtr.release()));
+ return ownPtr;
}
};
diff --git a/WebCore/platform/PlatformKeyboardEvent.h b/WebCore/platform/PlatformKeyboardEvent.h
index 824587e..6ec4879 100644
--- a/WebCore/platform/PlatformKeyboardEvent.h
+++ b/WebCore/platform/PlatformKeyboardEvent.h
@@ -249,6 +249,12 @@ namespace WebCore {
QKeyEvent* m_qtEvent;
#endif
};
+
+#if PLATFORM(QT)
+// Used by WebKit2.
+String keyIdentifierForQtKeyCode(int keyCode);
+int windowsKeyCodeForKeyEvent(unsigned int keycode, bool isKeypad = false);
+#endif
} // namespace WebCore
diff --git a/WebCore/platform/PurgeableBuffer.h b/WebCore/platform/PurgeableBuffer.h
index 94e58da..3caf482 100644
--- a/WebCore/platform/PurgeableBuffer.h
+++ b/WebCore/platform/PurgeableBuffer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,14 +27,15 @@
#define PurgeableBuffer_h
#include <wtf/Noncopyable.h>
+#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
class PurgeableBuffer : public Noncopyable {
public:
- static PurgeableBuffer* create(const char* data, size_t);
- static PurgeableBuffer* create(const Vector<char>& v) { return create(v.data(), v.size()); }
+ static PassOwnPtr<PurgeableBuffer> create(const char* data, size_t);
+ static PassOwnPtr<PurgeableBuffer> create(const Vector<char>& vector) { return create(vector.data(), vector.size()); }
~PurgeableBuffer();
@@ -63,7 +64,7 @@ namespace WebCore {
};
#if !OS(DARWIN) || defined(BUILDING_ON_TIGER) || PLATFORM(QT) || PLATFORM(GTK)
- inline PurgeableBuffer* PurgeableBuffer::create(const char*, size_t) { return 0; }
+ inline PassOwnPtr<PurgeableBuffer> PurgeableBuffer::create(const char*, size_t) { return PassOwnPtr<PurgeableBuffer>(); }
inline PurgeableBuffer::~PurgeableBuffer() { }
inline const char* PurgeableBuffer::data() const { return 0; }
inline void PurgeableBuffer::setPurgePriority(PurgePriority) { }
diff --git a/WebCore/platform/SharedBuffer.cpp b/WebCore/platform/SharedBuffer.cpp
index 4a46c2c..6cf1131 100644
--- a/WebCore/platform/SharedBuffer.cpp
+++ b/WebCore/platform/SharedBuffer.cpp
@@ -28,6 +28,7 @@
#include "SharedBuffer.h"
#include "PurgeableBuffer.h"
+#include <wtf/PassOwnPtr.h>
using namespace std;
@@ -86,11 +87,11 @@ PassRefPtr<SharedBuffer> SharedBuffer::adoptVector(Vector<char>& vector)
return buffer.release();
}
-PassRefPtr<SharedBuffer> SharedBuffer::adoptPurgeableBuffer(PurgeableBuffer* purgeableBuffer)
+PassRefPtr<SharedBuffer> SharedBuffer::adoptPurgeableBuffer(PassOwnPtr<PurgeableBuffer> purgeableBuffer)
{
ASSERT(!purgeableBuffer->isPurgeable());
RefPtr<SharedBuffer> buffer = create();
- buffer->m_purgeableBuffer.set(purgeableBuffer);
+ buffer->m_purgeableBuffer = purgeableBuffer;
return buffer.release();
}
@@ -184,7 +185,7 @@ PassRefPtr<SharedBuffer> SharedBuffer::copy() const
return clone;
}
-PurgeableBuffer* SharedBuffer::releasePurgeableBuffer()
+PassOwnPtr<PurgeableBuffer> SharedBuffer::releasePurgeableBuffer()
{
ASSERT(hasOneRef());
return m_purgeableBuffer.release();
diff --git a/WebCore/platform/SharedBuffer.h b/WebCore/platform/SharedBuffer.h
index c2db21e..73afadf 100644
--- a/WebCore/platform/SharedBuffer.h
+++ b/WebCore/platform/SharedBuffer.h
@@ -61,7 +61,7 @@ public:
// The buffer must be in non-purgeable state before adopted to a SharedBuffer.
// It will stay that way until released.
- static PassRefPtr<SharedBuffer> adoptPurgeableBuffer(PurgeableBuffer* buffer);
+ static PassRefPtr<SharedBuffer> adoptPurgeableBuffer(PassOwnPtr<PurgeableBuffer>);
#if PLATFORM(ANDROID)
virtual
@@ -106,7 +106,7 @@ public:
bool hasPurgeableBuffer() const { return m_purgeableBuffer.get(); }
// Ensure this buffer has no other clients before calling this.
- PurgeableBuffer* releasePurgeableBuffer();
+ PassOwnPtr<PurgeableBuffer> releasePurgeableBuffer();
// Return the number of consecutive bytes after "position". "data"
// points to the first byte.
diff --git a/WebCore/platform/ThemeTypes.h b/WebCore/platform/ThemeTypes.h
index 271bd83..d82aa73 100644
--- a/WebCore/platform/ThemeTypes.h
+++ b/WebCore/platform/ThemeTypes.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -51,7 +51,7 @@ enum ControlPart {
MediaFullscreenButtonPart, MediaMuteButtonPart, MediaPlayButtonPart, MediaSeekBackButtonPart,
MediaSeekForwardButtonPart, MediaRewindButtonPart, MediaReturnToRealtimeButtonPart, MediaToggleClosedCaptionsButtonPart,
MediaSliderPart, MediaSliderThumbPart, MediaVolumeSliderContainerPart, MediaVolumeSliderPart, MediaVolumeSliderThumbPart,
- MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
+ MediaVolumeSliderMuteButtonPart, MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, MeterPart, OuterSpinButtonPart, ProgressBarPart, ProgressBarValuePart,
SliderHorizontalPart, SliderVerticalPart, SliderThumbHorizontalPart,
SliderThumbVerticalPart, CaretPart, SearchFieldPart, SearchFieldDecorationPart,
diff --git a/WebCore/platform/chromium/GLES2Context.h b/WebCore/platform/chromium/GLES2Context.h
index 93a343c..b72329a 100644
--- a/WebCore/platform/chromium/GLES2Context.h
+++ b/WebCore/platform/chromium/GLES2Context.h
@@ -38,20 +38,32 @@
namespace WebCore {
class GLES2ContextInternal;
+class IntSize;
class Page;
class GLES2Context : public Noncopyable {
public:
- // If a Page is specified then the resulting GL ES context draws directly
- // to the window associated with the Page, otherwise an off-screen GL ES context is
- // created.
- static PassOwnPtr<GLES2Context> create(Page*);
+ // Creates a GL ES context that draws directly to the window associated with
+ // the Page.
+ static PassOwnPtr<GLES2Context> createOnscreen(Page*);
+
+ // Creates a GL ES context that renders offscreen, optionally as a child
+ // of the given parent if specified.
+ static PassOwnPtr<GLES2Context> createOffscreen(GLES2Context* parent);
+
~GLES2Context();
bool makeCurrent();
bool destroy();
bool swapBuffers();
+ // Only valid for offscreen contexts.
+ void resizeOffscreenContent(const IntSize&);
+
+ // Returns the ID of the texture used for offscreen rendering in the context of the parent.
+ // This texture is accessible by the GPU page compositor.
+ unsigned getOffscreenContentParentTextureId();
+
private:
friend class GLES2ContextInternal;
OwnPtr<GLES2ContextInternal> m_internal;
diff --git a/WebCore/platform/graphics/Color.cpp b/WebCore/platform/graphics/Color.cpp
index 2f2a357..80c8286 100644
--- a/WebCore/platform/graphics/Color.cpp
+++ b/WebCore/platform/graphics/Color.cpp
@@ -126,9 +126,8 @@ RGBA32 makeRGBAFromCMYKA(float c, float m, float y, float k, float a)
}
// originally moved here from the CSS parser
-bool Color::parseHexColor(const String& name, RGBA32& rgb)
+bool Color::parseHexColor(const UChar* name, unsigned length, RGBA32& rgb)
{
- unsigned length = name.length();
if (length != 3 && length != 6)
return false;
unsigned value = 0;
@@ -150,6 +149,11 @@ bool Color::parseHexColor(const String& name, RGBA32& rgb)
return true;
}
+bool Color::parseHexColor(const String& name, RGBA32& rgb)
+{
+ return parseHexColor(name.characters(), name.length(), rgb);
+}
+
int differenceSquared(const Color& c1, const Color& c2)
{
int dR = c1.red() - c2.red();
@@ -160,8 +164,8 @@ int differenceSquared(const Color& c1, const Color& c2)
Color::Color(const String& name)
{
- if (name.startsWith("#"))
- m_valid = parseHexColor(name.substring(1), m_color);
+ if (name[0] == '#')
+ m_valid = parseHexColor(name.characters() + 1, name.length() - 1, m_color);
else
setNamedColor(name);
}
diff --git a/WebCore/platform/graphics/Color.h b/WebCore/platform/graphics/Color.h
index a6412d6..089d061 100644
--- a/WebCore/platform/graphics/Color.h
+++ b/WebCore/platform/graphics/Color.h
@@ -27,6 +27,7 @@
#define Color_h
#include <wtf/FastAllocBase.h>
+#include <wtf/unicode/Unicode.h>
#if PLATFORM(CG)
typedef struct CGColor* CGColorRef;
@@ -53,8 +54,8 @@ struct rgb_color;
namespace WebCore {
-class String;
class Color;
+class String;
typedef unsigned RGBA32; // RGBA quadruplet
@@ -135,6 +136,7 @@ public:
#endif
static bool parseHexColor(const String& name, RGBA32& rgb);
+ static bool parseHexColor(const UChar* name, unsigned length, RGBA32& rgb);
static const RGBA32 black = 0xFF000000;
static const RGBA32 white = 0xFFFFFFFF;
diff --git a/WebCore/platform/graphics/GlyphMetricsMap.h b/WebCore/platform/graphics/GlyphMetricsMap.h
index 82e234b..fa85bcc 100644
--- a/WebCore/platform/graphics/GlyphMetricsMap.h
+++ b/WebCore/platform/graphics/GlyphMetricsMap.h
@@ -113,7 +113,7 @@ template<class T> typename GlyphMetricsMap<T>::GlyphMetricsPage* GlyphMetricsMap
if ((page = m_pages->get(pageNumber)))
return page;
} else
- m_pages.set(new HashMap<int, GlyphMetricsPage*>);
+ m_pages = adoptPtr(new HashMap<int, GlyphMetricsPage*>);
page = new GlyphMetricsPage;
m_pages->set(pageNumber, page);
}
diff --git a/WebCore/platform/graphics/GraphicsLayer.h b/WebCore/platform/graphics/GraphicsLayer.h
index b5797fd..8fcebce 100644
--- a/WebCore/platform/graphics/GraphicsLayer.h
+++ b/WebCore/platform/graphics/GraphicsLayer.h
@@ -94,10 +94,9 @@ class AnimationValue : public Noncopyable {
public:
AnimationValue(float keyTime, const TimingFunction* timingFunction = 0)
: m_keyTime(keyTime)
- , m_timingFunction(0)
{
if (timingFunction)
- m_timingFunction.set(new TimingFunction(*timingFunction));
+ m_timingFunction = adoptPtr(new TimingFunction(*timingFunction));
}
virtual ~AnimationValue() { }
@@ -132,7 +131,7 @@ public:
: AnimationValue(keyTime, timingFunction)
{
if (value)
- m_value.set(new TransformOperations(*value));
+ m_value = adoptPtr(new TransformOperations(*value));
}
const TransformOperations* value() const { return m_value.get(); }
diff --git a/WebCore/platform/graphics/MediaPlayer.cpp b/WebCore/platform/graphics/MediaPlayer.cpp
index 4eb4c6b..3915713 100644
--- a/WebCore/platform/graphics/MediaPlayer.cpp
+++ b/WebCore/platform/graphics/MediaPlayer.cpp
@@ -53,11 +53,10 @@
#include "MediaPlayerPrivateQuickTimeVisualContext.h"
#include "MediaPlayerPrivateQuicktimeWin.h"
#elif PLATFORM(QT)
-// QtMultimedia support is disabled currently.
-#if 1 || (QT_VERSION < 0x040700)
-#include "MediaPlayerPrivatePhonon.h"
-#else
+#if USE(QT_MULTIMEDIA)
#include "MediaPlayerPrivateQt.h"
+#else
+#include "MediaPlayerPrivatePhonon.h"
#endif
#elif PLATFORM(CHROMIUM)
#include "MediaPlayerPrivateChromium.h"
diff --git a/WebCore/platform/graphics/MediaPlayer.h b/WebCore/platform/graphics/MediaPlayer.h
index f825b57..87f8fb4 100644
--- a/WebCore/platform/graphics/MediaPlayer.h
+++ b/WebCore/platform/graphics/MediaPlayer.h
@@ -144,7 +144,7 @@ public:
static PassOwnPtr<MediaPlayer> create(MediaPlayerClient* client)
{
- return new MediaPlayer(client);
+ return adoptPtr(new MediaPlayer(client));
}
virtual ~MediaPlayer();
diff --git a/WebCore/platform/graphics/SimpleFontData.h b/WebCore/platform/graphics/SimpleFontData.h
index bc897be..ba959e4 100644
--- a/WebCore/platform/graphics/SimpleFontData.h
+++ b/WebCore/platform/graphics/SimpleFontData.h
@@ -31,6 +31,7 @@
#include "GlyphPageTreeNode.h"
#include "TypesettingFeatures.h"
#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
#if USE(ATSUI)
typedef struct OpaqueATSUStyle* ATSUStyle;
@@ -264,7 +265,7 @@ ALWAYS_INLINE FloatRect SimpleFontData::boundsForGlyph(Glyph glyph) const
bounds = platformBoundsForGlyph(glyph);
if (!m_glyphToBoundsMap)
- m_glyphToBoundsMap.set(new GlyphMetricsMap<FloatRect>());
+ m_glyphToBoundsMap = adoptPtr(new GlyphMetricsMap<FloatRect>);
m_glyphToBoundsMap->setMetricsForGlyph(glyph, bounds);
return bounds;
}
diff --git a/WebCore/platform/graphics/cairo/DrawErrorUnderline.h b/WebCore/platform/graphics/cairo/DrawErrorUnderline.h
index 9776853..1e0a846 100644
--- a/WebCore/platform/graphics/cairo/DrawErrorUnderline.h
+++ b/WebCore/platform/graphics/cairo/DrawErrorUnderline.h
@@ -53,7 +53,7 @@ static inline void drawErrorUnderline(cairo_t* cr, double x, double y, double wi
double halfSquare = 0.5 * square;
double unitWidth = (heightSquares - 1.0) * square;
- int widthUnits = static_cast<int>(0.5 * (width + unitWidth) / unitWidth);
+ int widthUnits = static_cast<int>((width + 0.5 * unitWidth) / unitWidth);
x += 0.5 * (width - widthUnits * unitWidth);
width = widthUnits * unitWidth;
diff --git a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
index e8324a3..6ed8905 100644
--- a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
+++ b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
@@ -563,8 +563,10 @@ void GraphicsContext::fillRect(const FloatRect& rect)
return;
cairo_t* cr = m_data->cr;
+ cairo_save(cr);
cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
fillPath();
+ cairo_restore(cr);
}
static void drawBorderlessRectShadow(GraphicsContext* context, const FloatRect& rect, const Color& rectColor)
@@ -899,7 +901,7 @@ void GraphicsContext::createPlatformShadow(PassOwnPtr<ImageBuffer> buffer, const
// create filter
RefPtr<Filter> filter = ImageBufferFilter::create();
- filter->setSourceImage(buffer.release());
+ filter->setSourceImage(buffer);
RefPtr<FilterEffect> source = SourceGraphic::create();
source->setScaledSubRegion(FloatRect(FloatPoint(), shadowRect.size()));
source->setIsAlphaImage(true);
diff --git a/WebCore/platform/graphics/chromium/FontLinux.cpp b/WebCore/platform/graphics/chromium/FontLinux.cpp
index a2098a4..1953dd8 100644
--- a/WebCore/platform/graphics/chromium/FontLinux.cpp
+++ b/WebCore/platform/graphics/chromium/FontLinux.cpp
@@ -49,6 +49,7 @@
#include <unicode/uchar.h>
#include <wtf/OwnArrayPtr.h>
#include <wtf/OwnPtr.h>
+#include <wtf/unicode/Unicode.h>
namespace WebCore {
@@ -180,10 +181,20 @@ public:
m_item.face = 0;
m_item.font = allocHarfbuzzFont();
- m_item.string = m_run.characters();
- m_item.stringLength = m_run.length();
m_item.item.bidiLevel = m_run.rtl();
+ int length = m_run.length();
+ m_item.stringLength = length;
+
+ if (!m_item.item.bidiLevel)
+ m_item.string = m_run.characters();
+ else {
+ // Assume mirrored character is in the same Unicode multilingual plane as the original one.
+ UChar* string = new UChar[length];
+ mirrorCharacters(string, m_run.characters(), length);
+ m_item.string = string;
+ }
+
reset();
}
@@ -192,6 +203,8 @@ public:
fastFree(m_item.font);
deleteGlyphArrays();
delete[] m_item.log_clusters;
+ if (m_item.item.bidiLevel)
+ delete[] m_item.string;
}
void reset()
@@ -455,6 +468,22 @@ private:
m_offsetX += m_pixelWidth;
}
+ void mirrorCharacters(UChar* destination, const UChar* source, int length) const
+ {
+ int position = 0;
+ bool error = false;
+ // Iterate characters in source and mirror character if needed.
+ while (position < length) {
+ UChar32 character;
+ int nextPosition = position;
+ U16_NEXT(source, nextPosition, length, character);
+ character = u_charMirror(character);
+ U16_APPEND(destination, position, length, character, error);
+ ASSERT(!error);
+ position = nextPosition;
+ }
+ }
+
const Font* const m_font;
HB_ShaperItem m_item;
uint16_t* m_glyphs16; // A vector of 16-bit glyph ids.
diff --git a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
index 59da9ae..9ac506c 100644
--- a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
+++ b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
@@ -647,7 +647,7 @@ bool LayerRendererChromium::makeContextCurrent()
bool LayerRendererChromium::initGL()
{
- m_gles2Context = GLES2Context::create(m_page);
+ m_gles2Context = GLES2Context::createOnscreen(m_page);
if (!m_gles2Context)
return false;
diff --git a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
index 29ac356..7869c45 100644
--- a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
@@ -764,7 +764,7 @@ float MediaPlayerPrivateGStreamer::maxTimeSeekable() const
if (isinf(duration()))
return 0.0f;
- return maxTimeLoaded();
+ return duration();
}
float MediaPlayerPrivateGStreamer::maxTimeLoaded() const
@@ -920,10 +920,13 @@ void MediaPlayerPrivateGStreamer::updateStates()
gst_element_state_get_name(pending));
// Change in progress
- if (!m_isStreaming)
+ if (!m_isStreaming && !m_buffering)
return;
- // Resume playback if a seek was performed in a live pipeline.
+ // Resume playback if a seek was performed in a live pipeline
+ // or during progressive download. That second use-case
+ // happens when the seek is performed to a region of the media
+ // that hasn't been downloaded yet.
if (m_seeking) {
shouldUpdateAfterSeek = true;
m_seeking = false;
diff --git a/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp b/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
index c55f7bf..d3b5f1b 100644
--- a/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
+++ b/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
@@ -330,6 +330,7 @@ static void webKitWebSrcStop(WebKitWebSrc* src, bool seeking)
if (priv->frame)
priv->frame.release();
+ GST_OBJECT_LOCK(src);
if (priv->needDataID)
g_source_remove(priv->needDataID);
priv->needDataID = 0;
@@ -343,6 +344,7 @@ static void webKitWebSrcStop(WebKitWebSrc* src, bool seeking)
priv->seekID = 0;
priv->paused = FALSE;
+ GST_OBJECT_UNLOCK(src);
g_free(priv->iradioName);
priv->iradioName = 0;
@@ -542,8 +544,10 @@ static gboolean webKitWebSrcNeedDataMainCb(WebKitWebSrc* src)
// Ports not using libsoup need to call the unpause/schedule API of their
// underlying network implementation here.
+ GST_OBJECT_LOCK(src);
priv->paused = FALSE;
priv->needDataID = 0;
+ GST_OBJECT_UNLOCK(src);
return FALSE;
}
@@ -553,10 +557,15 @@ static void webKitWebSrcNeedDataCb(GstAppSrc* appsrc, guint length, gpointer use
WebKitWebSrcPrivate* priv = src->priv;
GST_DEBUG_OBJECT(src, "Need more data: %u", length);
- if (priv->needDataID || !priv->paused)
+
+ GST_OBJECT_LOCK(src);
+ if (priv->needDataID || !priv->paused) {
+ GST_OBJECT_UNLOCK(src);
return;
+ }
priv->needDataID = g_timeout_add_full(G_PRIORITY_DEFAULT, 0, (GSourceFunc) webKitWebSrcNeedDataMainCb, gst_object_ref(src), (GDestroyNotify) gst_object_unref);
+ GST_OBJECT_UNLOCK(src);
}
static gboolean webKitWebSrcEnoughDataMainCb(WebKitWebSrc* src)
@@ -570,8 +579,11 @@ static gboolean webKitWebSrcEnoughDataMainCb(WebKitWebSrc* src)
// Ports not using libsoup need to call the pause/unschedule API of their
// underlying network implementation here.
+ GST_OBJECT_LOCK(src);
priv->paused = TRUE;
priv->enoughDataID = 0;
+ GST_OBJECT_UNLOCK(src);
+
return FALSE;
}
@@ -581,10 +593,15 @@ static void webKitWebSrcEnoughDataCb(GstAppSrc* appsrc, gpointer userData)
WebKitWebSrcPrivate* priv = src->priv;
GST_DEBUG_OBJECT(src, "Have enough data");
- if (priv->enoughDataID || priv->paused)
+
+ GST_OBJECT_LOCK(src);
+ if (priv->enoughDataID || priv->paused) {
+ GST_OBJECT_UNLOCK(src);
return;
+ }
priv->enoughDataID = g_timeout_add_full(G_PRIORITY_DEFAULT, 0, (GSourceFunc) webKitWebSrcEnoughDataMainCb, gst_object_ref(src), (GDestroyNotify) gst_object_unref);
+ GST_OBJECT_UNLOCK(src);
}
static gboolean webKitWebSrcSeekMainCb(WebKitWebSrc* src)
@@ -611,9 +628,12 @@ static gboolean webKitWebSrcSeekDataCb(GstAppSrc* appsrc, guint64 offset, gpoint
GST_DEBUG_OBJECT(src, "Doing range-request seek");
priv->requestedOffset = offset;
+
+ GST_OBJECT_LOCK(src);
if (priv->seekID)
g_source_remove(priv->seekID);
priv->seekID = g_timeout_add_full(G_PRIORITY_DEFAULT, 0, (GSourceFunc) webKitWebSrcSeekMainCb, gst_object_ref(src), (GDestroyNotify) gst_object_unref);
+ GST_OBJECT_UNLOCK(src);
return TRUE;
}
@@ -743,8 +763,12 @@ void StreamingClient::didReceiveData(ResourceHandle* handle, const char* data, i
void StreamingClient::didFinishLoading(ResourceHandle*)
{
+ WebKitWebSrcPrivate* priv = m_src->priv;
+
GST_DEBUG_OBJECT(m_src, "Have EOS");
- gst_app_src_end_of_stream(m_src->priv->appsrc);
+
+ if (!priv->seekID)
+ gst_app_src_end_of_stream(m_src->priv->appsrc);
}
void StreamingClient::didFail(ResourceHandle*, const ResourceError& error)
diff --git a/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp b/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp
index 9f20b68..fba3d4b 100644
--- a/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp
+++ b/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp
@@ -124,8 +124,10 @@ void ComplexTextController::collectComplexTextRunsForCharactersCoreText(const UC
if (!m_mayUseNaturalWritingDirection || m_run.directionalOverride()) {
static const void* optionKeys[] = { kCTTypesetterOptionForcedEmbeddingLevel };
- static const void* ltrOptionValues[] = { kCFBooleanFalse };
- static const void* rtlOptionValues[] = { kCFBooleanTrue };
+ const short ltrForcedEmbeddingLevelValue = 0;
+ const short rtlForcedEmbeddingLevelValue = 1;
+ static const void* ltrOptionValues[] = { CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &ltrForcedEmbeddingLevelValue) };
+ static const void* rtlOptionValues[] = { CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &rtlForcedEmbeddingLevelValue) };
static CFDictionaryRef ltrTypesetterOptions = CFDictionaryCreate(kCFAllocatorDefault, optionKeys, ltrOptionValues, sizeof(optionKeys) / sizeof(*optionKeys), &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
static CFDictionaryRef rtlTypesetterOptions = CFDictionaryCreate(kCFAllocatorDefault, optionKeys, rtlOptionValues, sizeof(optionKeys) / sizeof(*optionKeys), &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
typesetter.adoptCF(CTTypesetterCreateWithAttributedStringAndOptions(attributedString.get(), m_run.ltr() ? ltrTypesetterOptions : rtlTypesetterOptions));
diff --git a/WebCore/platform/graphics/mac/GraphicsLayerCA.mm b/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
index 852bdb0..43b3f3e 100644
--- a/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
+++ b/WebCore/platform/graphics/mac/GraphicsLayerCA.mm
@@ -1820,9 +1820,13 @@ bool GraphicsLayerCA::createTransformAnimationsFromKeyframes(const KeyframeValue
TransformOperation::OperationType transformOp = isMatrixAnimation ? TransformOperation::MATRIX_3D : functionList[animationIndex];
CAPropertyAnimation* caAnimation;
+#if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
// CA applies animations in reverse order (<rdar://problem/7095638>) so we need the last one we add (per property)
// to be non-additive.
bool additive = animationIndex < (numAnimations - 1);
+#else
+ bool additive = animationIndex > 0;
+#endif
if (isKeyframe) {
CAKeyframeAnimation* keyframeAnim = createKeyframeAnimation(animation, valueList.property(), additive);
validMatrices = setTransformAnimationKeyframes(valueList, animation, keyframeAnim, animationIndex, transformOp, isMatrixAnimation, boxSize);
diff --git a/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
index 9d23340..913a764 100644
--- a/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -260,6 +260,7 @@ GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate(QPainter* p)
antiAliasingForRectsAndLines = painter->testRenderHint(QPainter::Antialiasing);
// FIXME: Maybe only enable in SVG mode?
painter->setRenderHint(QPainter::Antialiasing, true);
+ painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
} else
antiAliasingForRectsAndLines = false;
}
@@ -1394,13 +1395,13 @@ void GraphicsContext::setImageInterpolationQuality(InterpolationQuality quality)
m_data->imageInterpolationQuality = quality;
switch (quality) {
- case InterpolationDefault:
case InterpolationNone:
case InterpolationLow:
// use nearest-neigbor
m_data->p()->setRenderHint(QPainter::SmoothPixmapTransform, false);
break;
+ case InterpolationDefault:
case InterpolationMedium:
case InterpolationHigh:
default:
diff --git a/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
index 226f1fb..89badcc 100644
--- a/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
+++ b/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
@@ -28,6 +28,7 @@
#include "TranslateTransformOperation.h"
#include "UnitBezier.h"
#include <QtCore/qabstractanimation.h>
+#include <QtCore/qdatetime.h>
#include <QtCore/qdebug.h>
#include <QtCore/qmetaobject.h>
#include <QtCore/qset.h>
@@ -45,6 +46,8 @@
#define QT_DEBUG_RECACHE 0
#define QT_DEBUG_CACHEDUMP 0
+#define QT_DEBUG_FPS 0
+
namespace WebCore {
#ifndef QT_NO_GRAPHICSEFFECT
@@ -1184,6 +1187,15 @@ void GraphicsLayerQt::syncCompositingState()
}
/* \reimp (GraphicsLayer.h)
+*/
+void GraphicsLayerQt::syncCompositingStateForThisLayerOnly()
+{
+ // We can't call flushChanges recursively here
+ m_impl->flushChanges(false);
+ GraphicsLayer::syncCompositingStateForThisLayerOnly();
+}
+
+/* \reimp (GraphicsLayer.h)
*/
NativeLayer GraphicsLayerQt::nativeLayer() const
{
@@ -1323,6 +1335,22 @@ protected:
// This is the part that differs between animated properties.
virtual void applyFrame(const T& fromValue, const T& toValue, qreal progress) = 0;
+ virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+ {
+#if QT_DEBUG_FPS
+ if (newState == Running && oldState == Stopped) {
+ qDebug("Animation Started!");
+ m_fps.frames = 0;
+ m_fps.duration.start();
+ } else if (newState == Stopped && oldState == Running) {
+ const int duration = m_fps.duration.elapsed();
+ qDebug("Animation Ended! %dms [%f FPS]", duration,
+ (1000 / (((float)duration) / m_fps.frames)));
+ }
+#endif
+ AnimationQtBase::updateState(newState, oldState);
+ }
+
virtual void updateCurrentTime(int currentTime)
{
if (!m_layer)
@@ -1362,9 +1390,18 @@ protected:
progress = (!progress || progress == 1 || it.key() == it2.key()) ?
progress : applyTimingFunction(timingFunc, (progress - it.key()) / (it2.key() - it.key()), duration());
applyFrame(fromValue, toValue, progress);
+#if QT_DEBUG_FPS
+ ++m_fps.frames;
+#endif
}
QMap<qreal, KeyframeValueQt<T> > m_keyframeValues;
+#if QT_DEBUG_FPS
+ struct {
+ QTime duration;
+ int frames;
+ } m_fps;
+#endif
};
class TransformAnimationQt : public AnimationQt<TransformOperations> {
@@ -1416,7 +1453,7 @@ public:
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
- AnimationQtBase::updateState(newState, oldState);
+ AnimationQt<TransformOperations>::updateState(newState, oldState);
if (!m_layer)
return;
@@ -1467,7 +1504,7 @@ public:
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
- QAbstractAnimation::updateState(newState, oldState);
+ AnimationQt<qreal>::updateState(newState, oldState);
if (m_layer)
m_layer.data()->m_opacityAnimationRunning = (newState == QAbstractAnimation::Running);
diff --git a/WebCore/platform/graphics/qt/GraphicsLayerQt.h b/WebCore/platform/graphics/qt/GraphicsLayerQt.h
index 6de5a6e..f81bd3d 100644
--- a/WebCore/platform/graphics/qt/GraphicsLayerQt.h
+++ b/WebCore/platform/graphics/qt/GraphicsLayerQt.h
@@ -83,6 +83,7 @@ public:
virtual void distributeOpacity(float);
virtual float accumulatedOpacity() const;
virtual void syncCompositingState();
+ virtual void syncCompositingStateForThisLayerOnly();
private:
OwnPtr<GraphicsLayerQtImpl> m_impl;
diff --git a/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index e46913c..a546def 100644
--- a/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -234,33 +234,43 @@ void putImageData(ImageData*& source, const IntRect& sourceRect, const IntPoint&
unsigned srcBytesPerRow = 4 * source->width();
- bool isPainting = data.m_painter->isActive();
- if (isPainting)
- data.m_painter->end();
+ QRect destRect(destx, desty, endx - destx, endy - desty);
- QImage image = data.m_pixmap.toImage();
- if (multiplied == Unmultiplied)
- image = image.convertToFormat(QImage::Format_ARGB32);
- else
- image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ QImage::Format format = multiplied == Unmultiplied ? QImage::Format_ARGB32 : QImage::Format_ARGB32_Premultiplied;
+ QImage image(destRect.size(), format);
unsigned char* srcRows = source->data()->data()->data() + originy * srcBytesPerRow + originx * 4;
for (int y = 0; y < numRows; ++y) {
- quint32* scanLine = reinterpret_cast<quint32*>(image.scanLine(y + desty));
+ quint32* scanLine = reinterpret_cast<quint32*>(image.scanLine(y));
for (int x = 0; x < numColumns; x++) {
// ImageData stores the pixels in RGBA while QImage is ARGB
quint32 pixel = reinterpret_cast<quint32*>(srcRows + 4 * x)[0];
pixel = ((pixel << 16) & 0xff0000) | ((pixel >> 16) & 0xff) | (pixel & 0xff00ff00);
- scanLine[x + destx] = pixel;
+ scanLine[x] = pixel;
}
srcRows += srcBytesPerRow;
}
- data.m_pixmap = QPixmap::fromImage(image);
-
- if (isPainting)
+ bool isPainting = data.m_painter->isActive();
+ if (!isPainting)
data.m_painter->begin(&data.m_pixmap);
+ else {
+ data.m_painter->save();
+
+ // putImageData() should be unaffected by painter state
+ data.m_painter->resetTransform();
+ data.m_painter->setOpacity(1.0);
+ data.m_painter->setClipping(false);
+ }
+
+ data.m_painter->setCompositionMode(QPainter::CompositionMode_Source);
+ data.m_painter->drawImage(destRect, image);
+
+ if (!isPainting)
+ data.m_painter->end();
+ else
+ data.m_painter->restore();
}
void ImageBuffer::putUnmultipliedImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
diff --git a/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp b/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp
index 21e670c..3c6c5aa 100644
--- a/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp
+++ b/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp
@@ -25,6 +25,7 @@
#include "FrameView.h"
#include "GraphicsContext.h"
+#include "Logging.h"
#include "MIMETypeRegistry.h"
#include "NotImplemented.h"
#include "TimeRanges.h"
diff --git a/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp b/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp
index 4d7b7b0..525aaf4 100644
--- a/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp
+++ b/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp
@@ -77,7 +77,7 @@ MediaPlayer::SupportsType MediaPlayerPrivate::supportsType(const String& mime, c
if (!mime.startsWith("audio/") && !mime.startsWith("video/"))
return MediaPlayer::IsNotSupported;
- if (QMediaPlayer::hasSupport(mime, QStringList(codec)) >= QtMediaServices::ProbablySupported)
+ if (QMediaPlayer::hasSupport(mime, QStringList(codec)) >= QtMultimediaKit::ProbablySupported)
return MediaPlayer::IsSupported;
return MediaPlayer::MayBeSupported;
@@ -96,7 +96,7 @@ MediaPlayerPrivate::MediaPlayerPrivate(MediaPlayer* player)
, m_composited(false)
, m_queuedSeek(-1)
{
- m_videoItem->setMediaObject(m_mediaPlayer);
+ m_mediaPlayer->bind(m_videoItem);
m_videoScene->addItem(m_videoItem);
// Signal Handlers
@@ -123,7 +123,7 @@ MediaPlayerPrivate::MediaPlayerPrivate(MediaPlayer* player)
QMediaService* service = m_mediaPlayer->service();
if (service) {
m_mediaPlayerControl = qobject_cast<QMediaPlayerControl *>(
- service->control(QMediaPlayerControl_iid));
+ service->requestControl(QMediaPlayerControl_iid));
}
}
@@ -344,8 +344,8 @@ unsigned MediaPlayerPrivate::bytesLoaded() const
unsigned MediaPlayerPrivate::totalBytes() const
{
- if (m_mediaPlayer->availableMetaData().contains(QtMediaServices::Size))
- return m_mediaPlayer->metaData(QtMediaServices::Size).toInt();
+ if (m_mediaPlayer->availableMetaData().contains(QtMultimediaKit::Size))
+ return m_mediaPlayer->metaData(QtMultimediaKit::Size).toInt();
return 100;
}
diff --git a/WebCore/platform/graphics/skia/GradientSkia.cpp b/WebCore/platform/graphics/skia/GradientSkia.cpp
index 7370a49..66a8976 100644
--- a/WebCore/platform/graphics/skia/GradientSkia.cpp
+++ b/WebCore/platform/graphics/skia/GradientSkia.cpp
@@ -154,18 +154,18 @@ SkShader* Gradient::platformGradient()
if (m_radial) {
// Since the two-point radial gradient is slower than the plain radial,
// only use it if we have to.
- if (m_p0 != m_p1) {
- // The radii we give to Skia must be positive. If we're given a
- // negative radius, ask for zero instead.
- SkScalar radius0 = m_r0 >= 0.0f ? WebCoreFloatToSkScalar(m_r0) : 0;
- SkScalar radius1 = m_r1 >= 0.0f ? WebCoreFloatToSkScalar(m_r1) : 0;
- m_gradient = SkGradientShader::CreateTwoPointRadial(m_p0, radius0, m_p1, radius1, colors, pos, static_cast<int>(countUsed), tile);
- } else {
+ if (m_p0 == m_p1 && m_r0 <= 0.0f) {
// The radius we give to Skia must be positive (and non-zero). If
// we're given a zero radius, just ask for a very small radius so
// Skia will still return an object.
SkScalar radius = m_r1 > 0 ? WebCoreFloatToSkScalar(m_r1) : SK_ScalarMin;
m_gradient = SkGradientShader::CreateRadial(m_p1, radius, colors, pos, static_cast<int>(countUsed), tile);
+ } else {
+ // The radii we give to Skia must be positive. If we're given a
+ // negative radius, ask for zero instead.
+ SkScalar radius0 = m_r0 >= 0.0f ? WebCoreFloatToSkScalar(m_r0) : 0;
+ SkScalar radius1 = m_r1 >= 0.0f ? WebCoreFloatToSkScalar(m_r1) : 0;
+ m_gradient = SkGradientShader::CreateTwoPointRadial(m_p0, radius0, m_p1, radius1, colors, pos, static_cast<int>(countUsed), tile);
}
} else {
SkPoint pts[2] = { m_p0, m_p1 };
diff --git a/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp b/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
index 793fe72..0c1898b 100644
--- a/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
+++ b/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
@@ -737,6 +737,8 @@ void GraphicsContext::fillRect(const FloatRect& rect)
if (paintingDisabled())
return;
+ platformContext()->save();
+
SkRect r = rect;
if (!isRectSkiaSafe(getCTM(), r)) {
// See the other version of fillRect below.
@@ -746,6 +748,8 @@ void GraphicsContext::fillRect(const FloatRect& rect)
SkPaint paint;
platformContext()->setupPaintForFilling(&paint);
platformContext()->canvas()->drawRect(r, paint);
+
+ platformContext()->restore();
}
void GraphicsContext::fillRect(const FloatRect& rect, const Color& color, ColorSpace colorSpace)
diff --git a/WebCore/platform/graphics/skia/SkiaUtils.cpp b/WebCore/platform/graphics/skia/SkiaUtils.cpp
index 377ca06..0c6b2d6 100644
--- a/WebCore/platform/graphics/skia/SkiaUtils.cpp
+++ b/WebCore/platform/graphics/skia/SkiaUtils.cpp
@@ -240,9 +240,7 @@ bool SkPathContainsPoint(SkPath* originalPath, const FloatPoint& point, SkPath::
GraphicsContext* scratchContext()
{
- static ImageBuffer* scratch = 0;
- if (!scratch)
- scratch = ImageBuffer::create(IntSize(1, 1)).release();
+ static ImageBuffer* scratch = ImageBuffer::create(IntSize(1, 1)).leakPtr();
// We don't bother checking for failure creating the ImageBuffer, since our
// ImageBuffer initializer won't fail.
return scratch->context();
diff --git a/WebCore/platform/graphics/wince/GraphicsContextWince.cpp b/WebCore/platform/graphics/wince/GraphicsContextWince.cpp
index 7bc6a27..5292b82 100644
--- a/WebCore/platform/graphics/wince/GraphicsContextWince.cpp
+++ b/WebCore/platform/graphics/wince/GraphicsContextWince.cpp
@@ -1555,10 +1555,14 @@ void GraphicsContext::clipToImageBuffer(const FloatRect&, const ImageBuffer*)
void GraphicsContext::fillRect(const FloatRect& rect)
{
+ savePlatformState();
+
if (m_common->state.fillGradient)
fillRect(rect, m_common->state.fillGradient.get());
else
fillRect(rect, fillColor(), DeviceColorSpace);
+
+ restorePlatformState();
}
void GraphicsContext::setPlatformShadow(const FloatSize&, float, const Color&, ColorSpace)
diff --git a/WebCore/platform/graphics/wx/GraphicsContextWx.cpp b/WebCore/platform/graphics/wx/GraphicsContextWx.cpp
index 5968ef3..01dce9e 100644
--- a/WebCore/platform/graphics/wx/GraphicsContextWx.cpp
+++ b/WebCore/platform/graphics/wx/GraphicsContextWx.cpp
@@ -272,9 +272,13 @@ void GraphicsContext::fillRect(const FloatRect& rect, const Color& color, ColorS
if (paintingDisabled())
return;
+ savePlatformState();
+
m_data->context->SetPen(*wxTRANSPARENT_PEN);
m_data->context->SetBrush(wxBrush(color));
m_data->context->DrawRectangle(rect.x(), rect.y(), rect.width(), rect.height());
+
+ restorePlatformState();
}
void GraphicsContext::fillRoundedRect(const IntRect& rect, const IntSize& topLeft, const IntSize& topRight, const IntSize& bottomLeft, const IntSize& bottomRight, const Color& color, ColorSpace colorSpace)
diff --git a/WebCore/platform/gtk/ClipboardUtilitiesGtk.cpp b/WebCore/platform/gtk/ClipboardUtilitiesGtk.cpp
index f6dea79..9fc0e74 100644
--- a/WebCore/platform/gtk/ClipboardUtilitiesGtk.cpp
+++ b/WebCore/platform/gtk/ClipboardUtilitiesGtk.cpp
@@ -39,8 +39,27 @@ GdkDragAction dragOperationToGdkDragActions(DragOperation coreAction)
return gdkAction;
}
+GdkDragAction dragOperationToSingleGdkDragAction(DragOperation coreAction)
+{
+ if (coreAction == DragOperationEvery || coreAction & DragOperationCopy)
+ return GDK_ACTION_COPY;
+ if (coreAction & DragOperationMove)
+ return GDK_ACTION_MOVE;
+ if (coreAction & DragOperationLink)
+ return GDK_ACTION_LINK;
+ if (coreAction & DragOperationPrivate)
+ return GDK_ACTION_PRIVATE;
+ return static_cast<GdkDragAction>(0);
+}
+
DragOperation gdkDragActionToDragOperation(GdkDragAction gdkAction)
{
+ // We have no good way to detect DragOperationEvery other than
+ // to use it when all applicable flags are on.
+ if (gdkAction & GDK_ACTION_COPY && gdkAction & GDK_ACTION_MOVE
+ && gdkAction & GDK_ACTION_LINK && gdkAction & GDK_ACTION_PRIVATE)
+ return DragOperationEvery;
+
unsigned int action = DragOperationNone;
if (gdkAction & GDK_ACTION_COPY)
action |= DragOperationCopy;
diff --git a/WebCore/platform/gtk/ClipboardUtilitiesGtk.h b/WebCore/platform/gtk/ClipboardUtilitiesGtk.h
index bdb2aec..26f6346 100644
--- a/WebCore/platform/gtk/ClipboardUtilitiesGtk.h
+++ b/WebCore/platform/gtk/ClipboardUtilitiesGtk.h
@@ -25,6 +25,7 @@
namespace WebCore {
GdkDragAction dragOperationToGdkDragActions(DragOperation);
+GdkDragAction dragOperationToSingleGdkDragAction(DragOperation);
DragOperation gdkDragActionToDragOperation(GdkDragAction);
}
diff --git a/WebCore/platform/gtk/GtkVersioning.h b/WebCore/platform/gtk/GtkVersioning.h
index 885d69f..ebb1645 100644
--- a/WebCore/platform/gtk/GtkVersioning.h
+++ b/WebCore/platform/gtk/GtkVersioning.h
@@ -27,6 +27,7 @@
#define gdk_visual_get_depth(visual) (visual)->depth
#define gdk_visual_get_bits_per_rgb(visual) (visual)->bits_per_rgb
#define gdk_drag_context_get_selected_action(context) (context)->action
+#define gdk_drag_context_get_actions(context) (context)->actions
#endif // GTK_CHECK_VERSION(2, 21, 2)
#if !GTK_CHECK_VERSION(2, 20, 0)
@@ -55,6 +56,7 @@
#define gtk_dialog_get_action_area(dialog) (dialog)->action_area
#define gtk_selection_data_get_length(data) (data)->length
#define gtk_selection_data_get_data(data) (data)->data
+#define gtk_selection_data_get_target(data) (data)->target
#define gtk_adjustment_set_page_size(adj, value) (adj)->page_size = value
#endif // GTK_CHECK_VERSION(2, 14, 0)
diff --git a/WebCore/platform/gtk/PasteboardHelper.cpp b/WebCore/platform/gtk/PasteboardHelper.cpp
index 98cbe42..111fb4e 100644
--- a/WebCore/platform/gtk/PasteboardHelper.cpp
+++ b/WebCore/platform/gtk/PasteboardHelper.cpp
@@ -34,7 +34,8 @@
namespace WebCore {
-static GdkAtom gdkMarkupAtom = gdk_atom_intern("text/html", FALSE);
+static GdkAtom textPlainAtom = gdk_atom_intern("text/plain;charset=utf-8", FALSE);
+static GdkAtom markupAtom = gdk_atom_intern("text/html", FALSE);
static GdkAtom netscapeURLAtom = gdk_atom_intern("_NETSCAPE_URL", FALSE);
static GdkAtom uriListAtom = gdk_atom_intern("text/uri-list", FALSE);
@@ -48,13 +49,13 @@ PasteboardHelper::~PasteboardHelper()
gtk_target_list_unref(m_targetList);
}
-
void PasteboardHelper::initializeTargetList()
{
gtk_target_list_add_text_targets(m_targetList, getIdForTargetType(TargetTypeText));
- gtk_target_list_add(m_targetList, gdkMarkupAtom, 0, getIdForTargetType(TargetTypeMarkup));
+ gtk_target_list_add(m_targetList, markupAtom, 0, getIdForTargetType(TargetTypeMarkup));
gtk_target_list_add_uri_targets(m_targetList, getIdForTargetType(TargetTypeURIList));
gtk_target_list_add(m_targetList, netscapeURLAtom, 0, getIdForTargetType(TargetTypeNetscapeURL));
+ gtk_target_list_add_image_targets(m_targetList, getIdForTargetType(TargetTypeImage), TRUE);
}
static inline GtkWidget* widgetFromFrame(Frame* frame)
@@ -102,6 +103,13 @@ static Vector<KURL> urisToKURLVector(gchar** uris)
return uriList;
}
+static String selectionDataToUTF8String(GtkSelectionData* data)
+{
+ // g_strndup guards against selection data that is not null-terminated.
+ GOwnPtr<gchar> markupString(g_strndup(reinterpret_cast<const char*>(gtk_selection_data_get_data(data)), gtk_selection_data_get_length(data)));
+ return String::fromUTF8(markupString.get());
+}
+
void PasteboardHelper::getClipboardContents(GtkClipboard* clipboard)
{
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
@@ -113,11 +121,9 @@ void PasteboardHelper::getClipboardContents(GtkClipboard* clipboard)
dataObject->setText(String::fromUTF8(textData.get()));
}
- if (gtk_clipboard_wait_is_target_available(clipboard, gdkMarkupAtom)) {
- if (GtkSelectionData* data = gtk_clipboard_wait_for_contents(clipboard, gdkMarkupAtom)) {
- // g_strndup guards against selection data that is not null-terminated.
- GOwnPtr<gchar> markupString(g_strndup(reinterpret_cast<const char*>(gtk_selection_data_get_data(data)), gtk_selection_data_get_length(data)));
- dataObject->setMarkup(String::fromUTF8(markupString.get()));
+ if (gtk_clipboard_wait_is_target_available(clipboard, markupAtom)) {
+ if (GtkSelectionData* data = gtk_clipboard_wait_for_contents(clipboard, markupAtom)) {
+ dataObject->setMarkup(selectionDataToUTF8String(data));
gtk_selection_data_free(data);
}
}
@@ -141,7 +147,7 @@ void PasteboardHelper::fillSelectionData(GtkSelectionData* selectionData, guint
else if (info == getIdForTargetType(TargetTypeMarkup)) {
GOwnPtr<gchar> markup(g_strdup(dataObject->markup().utf8().data()));
- gtk_selection_data_set(selectionData, gdkMarkupAtom, 8,
+ gtk_selection_data_set(selectionData, markupAtom, 8,
reinterpret_cast<const guchar*>(markup.get()), strlen(markup.get()) + 1);
} else if (info == getIdForTargetType(TargetTypeURIList)) {
@@ -179,7 +185,7 @@ GtkTargetList* PasteboardHelper::targetListForDataObject(DataObjectGtk* dataObje
gtk_target_list_add_text_targets(list, getIdForTargetType(TargetTypeText));
if (dataObject->hasMarkup())
- gtk_target_list_add(list, gdkMarkupAtom, 0, getIdForTargetType(TargetTypeMarkup));
+ gtk_target_list_add(list, markupAtom, 0, getIdForTargetType(TargetTypeMarkup));
if (dataObject->hasURIList()) {
gtk_target_list_add_uri_targets(list, getIdForTargetType(TargetTypeURIList));
@@ -192,6 +198,62 @@ GtkTargetList* PasteboardHelper::targetListForDataObject(DataObjectGtk* dataObje
return list;
}
+void PasteboardHelper::fillDataObjectFromDropData(GtkSelectionData* data, guint info, DataObjectGtk* dataObject)
+{
+ if (!gtk_selection_data_get_data(data))
+ return;
+
+ GdkAtom target = gtk_selection_data_get_target(data);
+ if (target == textPlainAtom)
+ dataObject->setText(selectionDataToUTF8String(data));
+ else if (target == markupAtom)
+ dataObject->setMarkup(selectionDataToUTF8String(data));
+ else if (target == uriListAtom) {
+ gchar** uris = gtk_selection_data_get_uris(data);
+ if (!uris)
+ return;
+
+ Vector<KURL> uriList(urisToKURLVector(uris));
+ dataObject->setURIList(uriList);
+ g_strfreev(uris);
+ } else if (target == netscapeURLAtom) {
+ String urlWithLabel(selectionDataToUTF8String(data));
+
+ Vector<String> pieces;
+ urlWithLabel.split("\n", pieces);
+
+ // Give preference to text/uri-list here, as it can hold more
+ // than one URI but still take the label if there is one.
+ if (!dataObject->hasURL()) {
+ Vector<KURL> uriList;
+ uriList.append(KURL(KURL(), pieces[0]));
+ dataObject->setURIList(uriList);
+ }
+
+ if (pieces.size() > 1)
+ dataObject->setText(pieces[1]);
+ }
+}
+
+Vector<GdkAtom> PasteboardHelper::dropAtomsForContext(GtkWidget* widget, GdkDragContext* context)
+{
+ // Always search for these common atoms.
+ Vector<GdkAtom> dropAtoms;
+ dropAtoms.append(textPlainAtom);
+ dropAtoms.append(markupAtom);
+ dropAtoms.append(uriListAtom);
+ dropAtoms.append(netscapeURLAtom);
+
+ // For images, try to find the most applicable image type.
+ GRefPtr<GtkTargetList> list(gtk_target_list_new(0, 0));
+ gtk_target_list_add_image_targets(list.get(), getIdForTargetType(TargetTypeImage), TRUE);
+ GdkAtom atom = gtk_drag_dest_find_target(widget, context, list.get());
+ if (atom != GDK_NONE)
+ dropAtoms.append(atom);
+
+ return dropAtoms;
+}
+
static DataObjectGtk* settingClipboardDataObject = 0;
static void getClipboardContentsCallback(GtkClipboard* clipboard, GtkSelectionData *selectionData, guint info, gpointer data)
diff --git a/WebCore/platform/gtk/PasteboardHelper.h b/WebCore/platform/gtk/PasteboardHelper.h
index 2d46adc..33be1a8 100644
--- a/WebCore/platform/gtk/PasteboardHelper.h
+++ b/WebCore/platform/gtk/PasteboardHelper.h
@@ -36,6 +36,8 @@ typedef struct _GtkClipboard GtkClipboard;
typedef struct _GtkTargetList GtkTargetList;
typedef struct _GtkWidget GtkWidget;
typedef struct _GtkSelectionData GtkSelectionData;
+typedef struct _GdkDragContext GdkDragContext;
+typedef struct _GdkAtom* GdkAtom;
namespace WebCore {
@@ -52,6 +54,8 @@ public:
GtkTargetList* targetList() const;
GtkTargetList* targetListForDataObject(DataObjectGtk*);
void fillSelectionData(GtkSelectionData*, guint, DataObjectGtk*);
+ void fillDataObjectFromDropData(GtkSelectionData*, guint, DataObjectGtk*);
+ Vector<GdkAtom> dropAtomsForContext(GtkWidget*, GdkDragContext*);
void writeClipboardContents(GtkClipboard*, GClosure* closure = 0);
void getClipboardContents(GtkClipboard*);
diff --git a/WebCore/platform/gtk/ScrollViewGtk.cpp b/WebCore/platform/gtk/ScrollViewGtk.cpp
index 3edc7b0..e705fe0 100644
--- a/WebCore/platform/gtk/ScrollViewGtk.cpp
+++ b/WebCore/platform/gtk/ScrollViewGtk.cpp
@@ -106,40 +106,7 @@ void ScrollView::setGtkAdjustments(GtkAdjustment* hadj, GtkAdjustment* vadj, boo
m_horizontalAdjustment = hadj;
m_verticalAdjustment = vadj;
- // Reset the adjustments to a sane default
- if (m_horizontalAdjustment) {
- ScrollbarGtk* hScrollbar = reinterpret_cast<ScrollbarGtk*>(horizontalScrollbar());
- if (hScrollbar)
- hScrollbar->attachAdjustment(m_horizontalAdjustment);
-
- ScrollbarGtk* vScrollbar = reinterpret_cast<ScrollbarGtk*>(verticalScrollbar());
- if (vScrollbar)
- vScrollbar->attachAdjustment(m_verticalAdjustment);
-
- // We used to reset everything to 0 here, but when page cache
- // is enabled we reuse FrameViews that are cached. Since their
- // size is not going to change when being restored, (which is
- // what would cause the upper limit in the adjusments to be
- // set in the normal case), we make sure they are up-to-date
- // here. This is needed for the parent scrolling widget to be
- // able to report correct values.
-
- int horizontalPageStep = max(max<int>(frameRect().width() * Scrollbar::minFractionToStepWhenPaging(), frameRect().width() - Scrollbar::maxOverlapBetweenPages()), 1);
- gtk_adjustment_configure(m_horizontalAdjustment,
- resetValues ? 0 : scrollOffset().width(), 0,
- resetValues ? 0 : contentsSize().width(),
- resetValues ? 0 : Scrollbar::pixelsPerLineStep(),
- resetValues ? 0 : horizontalPageStep,
- resetValues ? 0 : frameRect().width());
-
- int verticalPageStep = max(max<int>(frameRect().height() * Scrollbar::minFractionToStepWhenPaging(), frameRect().height() - Scrollbar::maxOverlapBetweenPages()), 1);
- gtk_adjustment_configure(m_verticalAdjustment,
- resetValues ? 0 : scrollOffset().height(), 0,
- resetValues ? 0 : contentsSize().height(),
- resetValues ? 0 : Scrollbar::pixelsPerLineStep(),
- resetValues ? 0 : verticalPageStep,
- resetValues ? 0 : frameRect().height());
- } else {
+ if (!m_horizontalAdjustment) {
ScrollbarGtk* hScrollbar = reinterpret_cast<ScrollbarGtk*>(horizontalScrollbar());
if (hScrollbar)
hScrollbar->detachAdjustment();
@@ -147,11 +114,44 @@ void ScrollView::setGtkAdjustments(GtkAdjustment* hadj, GtkAdjustment* vadj, boo
ScrollbarGtk* vScrollbar = reinterpret_cast<ScrollbarGtk*>(verticalScrollbar());
if (vScrollbar)
vScrollbar->detachAdjustment();
+
+ return;
}
- /* reconsider having a scrollbar */
- setHasVerticalScrollbar(false);
- setHasHorizontalScrollbar(false);
+ // We may be lacking scrollbars when returning to a cached
+ // page, this kicks the page to recreate the scrollbars.
+ setHasVerticalScrollbar(true);
+ setHasHorizontalScrollbar(true);
+
+ ScrollbarGtk* hScrollbar = reinterpret_cast<ScrollbarGtk*>(horizontalScrollbar());
+ hScrollbar->attachAdjustment(m_horizontalAdjustment);
+
+ ScrollbarGtk* vScrollbar = reinterpret_cast<ScrollbarGtk*>(verticalScrollbar());
+ vScrollbar->attachAdjustment(m_verticalAdjustment);
+
+ // We used to reset everything to 0 here, but when page cache
+ // is enabled we reuse FrameViews that are cached. Since their
+ // size is not going to change when being restored, (which is
+ // what would cause the upper limit in the adjusments to be
+ // set in the normal case), we make sure they are up-to-date
+ // here. This is needed for the parent scrolling widget to be
+ // able to report correct values.
+
+ int horizontalPageStep = max(max<int>(frameRect().width() * Scrollbar::minFractionToStepWhenPaging(), frameRect().width() - Scrollbar::maxOverlapBetweenPages()), 1);
+ gtk_adjustment_configure(m_horizontalAdjustment,
+ resetValues ? 0 : scrollOffset().width(), 0,
+ resetValues ? 0 : contentsSize().width(),
+ resetValues ? 0 : Scrollbar::pixelsPerLineStep(),
+ resetValues ? 0 : horizontalPageStep,
+ resetValues ? 0 : frameRect().width());
+
+ int verticalPageStep = max(max<int>(frameRect().height() * Scrollbar::minFractionToStepWhenPaging(), frameRect().height() - Scrollbar::maxOverlapBetweenPages()), 1);
+ gtk_adjustment_configure(m_verticalAdjustment,
+ resetValues ? 0 : scrollOffset().height(), 0,
+ resetValues ? 0 : contentsSize().height(),
+ resetValues ? 0 : Scrollbar::pixelsPerLineStep(),
+ resetValues ? 0 : verticalPageStep,
+ resetValues ? 0 : frameRect().height());
}
void ScrollView::platformAddChild(Widget* child)
diff --git a/WebCore/platform/mac/PurgeableBufferMac.cpp b/WebCore/platform/mac/PurgeableBufferMac.cpp
index 9902f77..ce00494 100644
--- a/WebCore/platform/mac/PurgeableBufferMac.cpp
+++ b/WebCore/platform/mac/PurgeableBufferMac.cpp
@@ -50,27 +50,27 @@ PurgeableBuffer::~PurgeableBuffer()
vm_deallocate(mach_task_self(), reinterpret_cast<vm_address_t>(m_data), m_size);
}
-PurgeableBuffer* PurgeableBuffer::create(const char* data, size_t size)
+PassOwnPtr<PurgeableBuffer> PurgeableBuffer::create(const char* data, size_t size)
{
if (size < minPurgeableBufferSize)
- return 0;
+ return PassOwnPtr<PurgeableBuffer>();
vm_address_t buffer = 0;
kern_return_t ret = vm_allocate(mach_task_self(), &buffer, size, VM_FLAGS_PURGABLE | VM_FLAGS_ANYWHERE | VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY);
ASSERT(ret == KERN_SUCCESS);
if (ret != KERN_SUCCESS)
- return 0;
+ return PassOwnPtr<PurgeableBuffer>();
ret = vm_copy(mach_task_self(), reinterpret_cast<vm_address_t>(data), size, buffer);
ASSERT(ret == KERN_SUCCESS);
if (ret != KERN_SUCCESS) {
vm_deallocate(mach_task_self(), buffer, size);
- return 0;
+ return PassOwnPtr<PurgeableBuffer>();
}
- return new PurgeableBuffer(reinterpret_cast<char*>(buffer), size);
+ return adoptPtr(new PurgeableBuffer(reinterpret_cast<char*>(buffer), size));
}
bool PurgeableBuffer::makePurgeable(bool purgeable)
diff --git a/WebCore/platform/network/ResourceErrorBase.cpp b/WebCore/platform/network/ResourceErrorBase.cpp
index 97435ba..42bc0de 100644
--- a/WebCore/platform/network/ResourceErrorBase.cpp
+++ b/WebCore/platform/network/ResourceErrorBase.cpp
@@ -29,6 +29,8 @@
namespace WebCore {
+const char* const errorDomainWebKitInternal = "WebKitInternal";
+
ResourceError ResourceErrorBase::copy() const
{
lazyInit();
diff --git a/WebCore/platform/network/ResourceErrorBase.h b/WebCore/platform/network/ResourceErrorBase.h
index 237db9e..a6b7c69 100644
--- a/WebCore/platform/network/ResourceErrorBase.h
+++ b/WebCore/platform/network/ResourceErrorBase.h
@@ -32,6 +32,8 @@ namespace WebCore {
class ResourceError;
+extern const char* const errorDomainWebKitInternal; // Used for errors that won't be exposed to clients.
+
class ResourceErrorBase {
public:
// Makes a deep copy. Useful for when you need to use a ResourceError on another thread.
diff --git a/WebCore/platform/network/ResourceLoadTiming.h b/WebCore/platform/network/ResourceLoadTiming.h
index 55ff181..269fad0 100644
--- a/WebCore/platform/network/ResourceLoadTiming.h
+++ b/WebCore/platform/network/ResourceLoadTiming.h
@@ -34,7 +34,7 @@ namespace WebCore {
class ResourceLoadTiming : public RefCounted<ResourceLoadTiming> {
public:
- PassRefPtr<ResourceLoadTiming> create()
+ static PassRefPtr<ResourceLoadTiming> create()
{
return adoptRef(new ResourceLoadTiming);
}
@@ -42,33 +42,35 @@ public:
PassRefPtr<ResourceLoadTiming> deepCopy()
{
RefPtr<ResourceLoadTiming> timing = create();
- timing->redirectStart = redirectStart;
- timing->redirectEnd = redirectEnd;
- timing->redirectCount = redirectCount;
- timing->domainLookupStart = domainLookupStart;
- timing->domainLookupEnd = domainLookupEnd;
+ timing->requestTime = requestTime;
+ timing->proxyStart = proxyStart;
+ timing->proxyEnd = proxyEnd;
+ timing->dnsStart = dnsStart;
+ timing->dnsEnd = dnsEnd;
timing->connectStart = connectStart;
timing->connectEnd = connectEnd;
- timing->requestStart = requestStart;
- timing->requestEnd = requestEnd;
- timing->responseStart = responseStart;
- timing->responseEnd = responseEnd;
+ timing->sendStart = sendStart;
+ timing->sendEnd = sendEnd;
+ timing->receiveHeadersEnd = receiveHeadersEnd;
+ timing->sslStart = sslStart;
+ timing->sslEnd = sslEnd;
return timing.release();
}
bool operator==(const ResourceLoadTiming& other) const
{
- return redirectStart == other.redirectStart
- && redirectEnd == other.redirectEnd
- && redirectCount == other.redirectCount
- && domainLookupStart == other.domainLookupStart
- && domainLookupEnd == other.domainLookupEnd
+ return requestTime == other.requestTime
+ && proxyStart == other.proxyStart
+ && proxyEnd == other.proxyEnd
+ && dnsStart == other.dnsStart
+ && dnsEnd == other.dnsEnd
&& connectStart == other.connectStart
&& connectEnd == other.connectEnd
- && requestStart == other.requestStart
- && requestEnd == other.requestEnd
- && responseStart == other.responseStart
- && responseEnd == other.responseEnd;
+ && sendStart == other.sendStart
+ && sendEnd == other.sendEnd
+ && receiveHeadersEnd == other.receiveHeadersEnd
+ && sslStart == other.sslStart
+ && sslEnd == other.sslEnd;
}
bool operator!=(const ResourceLoadTiming& other) const
@@ -76,31 +78,33 @@ public:
return !(*this == other);
}
- double redirectStart;
- double redirectEnd;
- unsigned short redirectCount;
- double domainLookupStart;
- double domainLookupEnd;
- double connectStart;
- double connectEnd;
- double requestStart;
- double requestEnd;
- double responseStart;
- double responseEnd;
+ double requestTime;
+ int proxyStart;
+ int proxyEnd;
+ int dnsStart;
+ int dnsEnd;
+ int connectStart;
+ int connectEnd;
+ int sendStart;
+ int sendEnd;
+ int receiveHeadersEnd;
+ int sslStart;
+ int sslEnd;
private:
ResourceLoadTiming()
- : redirectStart(0.0)
- , redirectEnd(0.0)
- , redirectCount(0)
- , domainLookupStart(0.0)
- , domainLookupEnd(0.0)
- , connectStart(0.0)
- , connectEnd(0.0)
- , requestStart(0.0)
- , requestEnd(0.0)
- , responseStart(0.0)
- , responseEnd(0.0)
+ : requestTime(0)
+ , proxyStart(-1)
+ , proxyEnd(-1)
+ , dnsStart(-1)
+ , dnsEnd(-1)
+ , connectStart(-1)
+ , connectEnd(-1)
+ , sendStart(0)
+ , sendEnd(0)
+ , receiveHeadersEnd(0)
+ , sslStart(-1)
+ , sslEnd(-1)
{
}
};
diff --git a/WebCore/platform/network/ResourceRequestBase.h b/WebCore/platform/network/ResourceRequestBase.h
index 2cec4ec..1622cdd 100644
--- a/WebCore/platform/network/ResourceRequestBase.h
+++ b/WebCore/platform/network/ResourceRequestBase.h
@@ -132,6 +132,10 @@ namespace WebCore {
bool reportUploadProgress() const { return m_reportUploadProgress; }
void setReportUploadProgress(bool reportUploadProgress) { m_reportUploadProgress = reportUploadProgress; }
+ // Whether the timing information should be collected for the request.
+ bool reportLoadTiming() const { return m_reportLoadTiming; }
+ void setReportLoadTiming(bool reportLoadTiming) { m_reportLoadTiming = reportLoadTiming; }
+
// What this request is for.
TargetType targetType() const { return m_targetType; }
void setTargetType(TargetType type) { m_targetType = type; }
@@ -142,6 +146,7 @@ namespace WebCore {
: m_resourceRequestUpdated(false)
, m_platformRequestUpdated(true)
, m_reportUploadProgress(false)
+ , m_reportLoadTiming(false)
, m_targetType(TargetIsSubresource)
{
}
@@ -155,6 +160,7 @@ namespace WebCore {
, m_resourceRequestUpdated(true)
, m_platformRequestUpdated(false)
, m_reportUploadProgress(false)
+ , m_reportLoadTiming(false)
, m_targetType(TargetIsSubresource)
{
}
@@ -175,6 +181,7 @@ namespace WebCore {
mutable bool m_resourceRequestUpdated;
mutable bool m_platformRequestUpdated;
bool m_reportUploadProgress;
+ bool m_reportLoadTiming;
TargetType m_targetType;
private:
diff --git a/WebCore/platform/network/ResourceResponseBase.cpp b/WebCore/platform/network/ResourceResponseBase.cpp
index 607cd7f..89d31d7 100644
--- a/WebCore/platform/network/ResourceResponseBase.cpp
+++ b/WebCore/platform/network/ResourceResponseBase.cpp
@@ -43,6 +43,8 @@ ResourceResponseBase::ResourceResponseBase()
: m_expectedContentLength(0)
, m_httpStatusCode(0)
, m_lastModifiedDate(0)
+ , m_wasCached(false)
+ , m_connectionID(0)
, m_isNull(true)
, m_haveParsedCacheControlHeader(false)
, m_haveParsedAgeHeader(false)
@@ -68,6 +70,8 @@ ResourceResponseBase::ResourceResponseBase(const KURL& url, const String& mimeTy
, m_suggestedFilename(filename)
, m_httpStatusCode(0)
, m_lastModifiedDate(0)
+ , m_wasCached(false)
+ , m_connectionID(0)
, m_isNull(false)
, m_haveParsedCacheControlHeader(false)
, m_haveParsedAgeHeader(false)
@@ -455,6 +459,32 @@ time_t ResourceResponseBase::lastModifiedDate() const
return m_lastModifiedDate;
}
+bool ResourceResponseBase::wasCached() const
+{
+ lazyInit();
+
+ return m_wasCached;
+}
+
+void ResourceResponseBase::setWasCached(bool value)
+{
+ m_wasCached = value;
+}
+
+unsigned ResourceResponseBase::connectionID() const
+{
+ lazyInit();
+
+ return m_connectionID;
+}
+
+void ResourceResponseBase::setConnectionID(unsigned connectionID)
+{
+ lazyInit();
+
+ m_connectionID = connectionID;
+}
+
ResourceLoadTiming* ResourceResponseBase::resourceLoadTiming() const
{
lazyInit();
diff --git a/WebCore/platform/network/ResourceResponseBase.h b/WebCore/platform/network/ResourceResponseBase.h
index 697a84c..858a612 100644
--- a/WebCore/platform/network/ResourceResponseBase.h
+++ b/WebCore/platform/network/ResourceResponseBase.h
@@ -97,6 +97,12 @@ public:
double expires() const;
double lastModified() const;
+ unsigned connectionID() const;
+ void setConnectionID(unsigned);
+
+ bool wasCached() const;
+ void setWasCached(bool);
+
ResourceLoadTiming* resourceLoadTiming() const;
void setResourceLoadTiming(PassRefPtr<ResourceLoadTiming>);
@@ -130,6 +136,8 @@ protected:
String m_httpStatusText;
HTTPHeaderMap m_httpHeaderFields;
time_t m_lastModifiedDate;
+ bool m_wasCached;
+ unsigned m_connectionID;
RefPtr<ResourceLoadTiming> m_resourceLoadTiming;
bool m_isNull : 1;
diff --git a/WebCore/platform/network/android/ResourceHandleAndroid.cpp b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
index 81b75b0..60d1eb6 100644
--- a/WebCore/platform/network/android/ResourceHandleAndroid.cpp
+++ b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
@@ -156,6 +156,7 @@ void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request,
Frame* frame)
{
SyncLoader s(error, response, data);
+<<<<<<< HEAD
ResourceHandle h(request, &s, false, false);
// This blocks until the load is finished.
// Use the request owned by the ResourceHandle. This has had the username
@@ -163,6 +164,11 @@ void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request,
// ResourceHandleInternal::ResourceHandleInternal(). This matches the
// behaviour in the asynchronous case.
ResourceLoaderAndroid::start(&h, h.getInternal()->m_request, frame->loader()->client(), false, true);
+=======
+ RefPtr<ResourceHandle> h = adoptRef(new ResourceHandle(request, &s, false, false, false));
+ // This blocks until the load is finished.
+ ResourceLoaderAndroid::start(h.get(), request, frame->loader()->client(), false, true);
+>>>>>>> webkit.org at r63173
}
} // namespace WebCore
diff --git a/WebCore/platform/network/cf/ResourceHandleCFNet.cpp b/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
index f126d27..1139126 100644
--- a/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
+++ b/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
@@ -538,6 +538,12 @@ void ResourceHandle::receivedCredential(const AuthenticationChallenge& challenge
if (challenge != d->m_currentWebChallenge)
return;
+ // FIXME: Support empty credentials. Currently, an empty credential cannot be stored in WebCore credential storage, as that's empty value for its map.
+ if (credential.isEmpty()) {
+ receivedRequestToContinueWithoutCredential(challenge);
+ return;
+ }
+
if (credential.persistence() == CredentialPersistenceForSession) {
// Manage per-session credentials internally, because once NSURLCredentialPersistencePerSession is used, there is no way
// to ignore it for a particular request (short of removing it altogether).
diff --git a/WebCore/platform/network/curl/ResourceHandleCurl.cpp b/WebCore/platform/network/curl/ResourceHandleCurl.cpp
index 1fbafbd..a4c1f8e 100644
--- a/WebCore/platform/network/curl/ResourceHandleCurl.cpp
+++ b/WebCore/platform/network/curl/ResourceHandleCurl.cpp
@@ -190,11 +190,11 @@ bool ResourceHandle::loadsBlocked()
void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame*)
{
WebCoreSynchronousLoader syncLoader;
- ResourceHandle handle(request, &syncLoader, true, false);
+ RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(request, &syncLoader, true, false));
ResourceHandleManager* manager = ResourceHandleManager::sharedInstance();
- manager->dispatchSynchronousJob(&handle);
+ manager->dispatchSynchronousJob(handle.get());
error = syncLoader.resourceError();
data = syncLoader.data();
diff --git a/WebCore/platform/network/mac/ResourceHandleMac.mm b/WebCore/platform/network/mac/ResourceHandleMac.mm
index f14c108..9f64d4e 100644
--- a/WebCore/platform/network/mac/ResourceHandleMac.mm
+++ b/WebCore/platform/network/mac/ResourceHandleMac.mm
@@ -583,7 +583,8 @@ void ResourceHandle::receivedCredential(const AuthenticationChallenge& challenge
ASSERT(!challenge.isNull());
if (challenge != d->m_currentWebChallenge)
return;
-
+
+ // FIXME: Support empty credentials. Currently, an empty credential cannot be stored in WebCore credential storage, as that's empty value for its map.
if (credential.isEmpty()) {
receivedRequestToContinueWithoutCredential(challenge);
return;
diff --git a/WebCore/platform/network/qt/ResourceHandleQt.cpp b/WebCore/platform/network/qt/ResourceHandleQt.cpp
index b35df6b..ff75a94 100644
--- a/WebCore/platform/network/qt/ResourceHandleQt.cpp
+++ b/WebCore/platform/network/qt/ResourceHandleQt.cpp
@@ -189,9 +189,9 @@ PassRefPtr<SharedBuffer> ResourceHandle::bufferedData()
void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, StoredCredentials /*storedCredentials*/, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame* frame)
{
WebCoreSynchronousLoader syncLoader;
- ResourceHandle handle(request, &syncLoader, true, false);
+ RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(request, &syncLoader, true, false));
- ResourceHandleInternal *d = handle.getInternal();
+ ResourceHandleInternal* d = handle->getInternal();
if (!(d->m_user.isEmpty() || d->m_pass.isEmpty())) {
// If credentials were specified for this request, add them to the url,
// so that they will be passed to QNetworkRequest.
@@ -201,7 +201,7 @@ void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, S
d->m_request.setURL(urlWithCredentials);
}
d->m_frame = static_cast<FrameLoaderClientQt*>(frame->loader()->client())->webFrame();
- d->m_job = new QNetworkReplyHandler(&handle, QNetworkReplyHandler::LoadNormal);
+ d->m_job = new QNetworkReplyHandler(handle.get(), QNetworkReplyHandler::LoadNormal);
syncLoader.waitForCompletion();
error = syncLoader.resourceError();
diff --git a/WebCore/platform/network/soup/ResourceHandleSoup.cpp b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
index 15d914f..e4f2a4b 100644
--- a/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++ b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
@@ -658,9 +658,12 @@ bool ResourceHandle::willLoadFromCache(ResourceRequest&, Frame*)
void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, StoredCredentials /*storedCredentials*/, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame* frame)
{
WebCoreSynchronousLoader syncLoader(error, response, data);
- ResourceHandle handle(request, &syncLoader, true, false);
+ // FIXME: we should use the ResourceHandle::create method here,
+ // but it makes us timeout in a couple of tests. See
+ // https://bugs.webkit.org/show_bug.cgi?id=41823
+ RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(request, &syncLoader, true, false));
+ handle->start(frame);
- handle.start(frame);
syncLoader.run();
}
@@ -929,4 +932,3 @@ SoupSession* ResourceHandle::defaultSession()
}
}
-
diff --git a/WebCore/platform/qt/ClipboardQt.cpp b/WebCore/platform/qt/ClipboardQt.cpp
index f478e64..7d22349 100644
--- a/WebCore/platform/qt/ClipboardQt.cpp
+++ b/WebCore/platform/qt/ClipboardQt.cpp
@@ -50,6 +50,7 @@
#include <QList>
#include <QMimeData>
#include <QStringList>
+#include <QTextCodec>
#include <QUrl>
#include <qdebug.h>
@@ -62,6 +63,11 @@ static bool isTextMimeType(const String& type)
return type == "text/plain" || type.startsWith("text/plain;");
}
+static bool isHtmlMimeType(const String& type)
+{
+ return type == "text/html" || type.startsWith("text/html;");
+}
+
ClipboardQt::ClipboardQt(ClipboardAccessPolicy policy, const QMimeData* readableClipboard)
: Clipboard(policy, true)
, m_readableData(readableClipboard)
@@ -135,15 +141,21 @@ String ClipboardQt::getData(const String& type, bool& success) const
return String();
}
+ if (isHtmlMimeType(type) && m_readableData->hasHtml()) {
+ success = true;
+ return m_readableData->html();
+ }
+
if (isTextMimeType(type) && m_readableData->hasText()) {
success = true;
return m_readableData->text();
}
ASSERT(m_readableData);
- QByteArray data = m_readableData->data(QString(type));
+ QByteArray rawData = m_readableData->data(type);
+ QString data = QTextCodec::codecForName("UTF-16")->toUnicode(rawData);
success = !data.isEmpty();
- return String(data.constData(), data.size());
+ return data;
}
bool ClipboardQt::setData(const String& type, const String& data)
@@ -156,6 +168,8 @@ bool ClipboardQt::setData(const String& type, const String& data)
if (isTextMimeType(type))
m_writableData->setText(QString(data));
+ else if (isHtmlMimeType(type))
+ m_writableData->setHtml(QString(data));
else {
QByteArray array(reinterpret_cast<const char*>(data.characters()), data.length() * 2);
m_writableData->setData(QString(type), array);
diff --git a/WebCore/platform/qt/PlatformKeyboardEventQt.cpp b/WebCore/platform/qt/PlatformKeyboardEventQt.cpp
index 58ab2bf..6dde9c4 100644
--- a/WebCore/platform/qt/PlatformKeyboardEventQt.cpp
+++ b/WebCore/platform/qt/PlatformKeyboardEventQt.cpp
@@ -36,7 +36,7 @@
namespace WebCore {
-static String keyIdentifierForQtKeyCode(int keyCode)
+String keyIdentifierForQtKeyCode(int keyCode)
{
switch (keyCode) {
case Qt::Key_Menu:
@@ -137,7 +137,7 @@ static String keyIdentifierForQtKeyCode(int keyCode)
}
}
-static int windowsKeyCodeForKeyEvent(unsigned int keycode, bool isKeypad = false)
+int windowsKeyCodeForKeyEvent(unsigned int keycode, bool isKeypad)
{
// Determine wheter the event comes from the keypad
if (isKeypad) {
diff --git a/WebCore/platform/text/TextEncodingRegistry.cpp b/WebCore/platform/text/TextEncodingRegistry.cpp
index dad0f39..6ecc36f 100644
--- a/WebCore/platform/text/TextEncodingRegistry.cpp
+++ b/WebCore/platform/text/TextEncodingRegistry.cpp
@@ -52,7 +52,7 @@
#include "gtk/TextCodecGtk.h"
#endif
#if OS(WINCE) && !PLATFORM(QT)
-#include "TextCodecWince.h"
+#include "TextCodecWinCE.h"
#endif
using namespace WTF;
@@ -231,8 +231,8 @@ static void buildBaseTextCodecMaps()
#endif
#if OS(WINCE) && !PLATFORM(QT)
- TextCodecWince::registerBaseEncodingNames(addToTextEncodingNameMap);
- TextCodecWince::registerBaseCodecs(addToTextCodecMap);
+ TextCodecWinCE::registerBaseEncodingNames(addToTextEncodingNameMap);
+ TextCodecWinCE::registerBaseCodecs(addToTextCodecMap);
#endif
}
@@ -259,8 +259,8 @@ static void extendTextCodecMaps()
#endif
#if OS(WINCE) && !PLATFORM(QT)
- TextCodecWince::registerExtendedEncodingNames(addToTextEncodingNameMap);
- TextCodecWince::registerExtendedCodecs(addToTextCodecMap);
+ TextCodecWinCE::registerExtendedEncodingNames(addToTextEncodingNameMap);
+ TextCodecWinCE::registerExtendedCodecs(addToTextCodecMap);
#endif
pruneBlacklistedCodecs();
diff --git a/WebCore/plugins/MimeType.cpp b/WebCore/plugins/DOMMimeType.cpp
index 5faeb5f..e1fa7f1 100644
--- a/WebCore/plugins/MimeType.cpp
+++ b/WebCore/plugins/DOMMimeType.cpp
@@ -17,34 +17,34 @@
*/
#include "config.h"
-#include "MimeType.h"
+#include "DOMMimeType.h"
+#include "DOMPlugin.h"
#include "Frame.h"
#include "FrameLoaderClient.h"
#include "Page.h"
-#include "Plugin.h"
#include "PluginData.h"
#include "Settings.h"
#include "StringBuilder.h"
namespace WebCore {
-MimeType::MimeType(PassRefPtr<PluginData> pluginData, unsigned index)
+DOMMimeType::DOMMimeType(PassRefPtr<PluginData> pluginData, unsigned index)
: m_pluginData(pluginData)
, m_index(index)
{
}
-MimeType::~MimeType()
+DOMMimeType::~DOMMimeType()
{
}
-const String &MimeType::type() const
+const String &DOMMimeType::type() const
{
return mimeClassInfo().type;
}
-String MimeType::suffixes() const
+String DOMMimeType::suffixes() const
{
const Vector<String>& extensions = mimeClassInfo().extensions;
@@ -57,18 +57,18 @@ String MimeType::suffixes() const
return builder.toString();
}
-const String &MimeType::description() const
+const String &DOMMimeType::description() const
{
return mimeClassInfo().desc;
}
-PassRefPtr<Plugin> MimeType::enabledPlugin() const
+PassRefPtr<DOMPlugin> DOMMimeType::enabledPlugin() const
{
const Page* p = m_pluginData->page();
if (!p || !p->mainFrame()->loader()->subframeLoader()->allowPlugins(NotAboutToInstantiatePlugin))
return 0;
- return Plugin::create(m_pluginData.get(), m_pluginData->mimePluginIndices()[m_index]);
+ return DOMPlugin::create(m_pluginData.get(), m_pluginData->mimePluginIndices()[m_index]);
}
} // namespace WebCore
diff --git a/WebCore/plugins/MimeType.h b/WebCore/plugins/DOMMimeType.h
index c91e0a3..a010e33 100644
--- a/WebCore/plugins/MimeType.h
+++ b/WebCore/plugins/DOMMimeType.h
@@ -17,8 +17,8 @@
Boston, MA 02110-1301, USA.
*/
-#ifndef MimeType_h
-#define MimeType_h
+#ifndef DOMMimeType_h
+#define DOMMimeType_h
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
@@ -28,26 +28,26 @@
namespace WebCore {
- class Plugin;
- class String;
-
- class MimeType : public RefCounted<MimeType> {
- public:
- static PassRefPtr<MimeType> create(PassRefPtr<PluginData> pluginData, unsigned index) { return adoptRef(new MimeType(pluginData, index)); }
- ~MimeType();
-
- const String &type() const;
- String suffixes() const;
- const String &description() const;
- PassRefPtr<Plugin> enabledPlugin() const;
-
- private:
- const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; }
-
- MimeType(PassRefPtr<PluginData>, unsigned index);
- RefPtr<PluginData> m_pluginData;
- unsigned m_index;
- };
+class DOMPlugin;
+class String;
+
+class DOMMimeType : public RefCounted<DOMMimeType> {
+public:
+ static PassRefPtr<DOMMimeType> create(PassRefPtr<PluginData> pluginData, unsigned index) { return adoptRef(new DOMMimeType(pluginData, index)); }
+ ~DOMMimeType();
+
+ const String &type() const;
+ String suffixes() const;
+ const String &description() const;
+ PassRefPtr<DOMPlugin> enabledPlugin() const;
+
+private:
+ const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; }
+
+ DOMMimeType(PassRefPtr<PluginData>, unsigned index);
+ RefPtr<PluginData> m_pluginData;
+ unsigned m_index;
+};
}
diff --git a/WebCore/plugins/MimeType.idl b/WebCore/plugins/DOMMimeType.idl
index 9d84eeb..1d97a6b 100644
--- a/WebCore/plugins/MimeType.idl
+++ b/WebCore/plugins/DOMMimeType.idl
@@ -20,11 +20,11 @@
module window {
- interface MimeType {
+ interface DOMMimeType {
readonly attribute DOMString type;
readonly attribute DOMString suffixes;
readonly attribute DOMString description;
- readonly attribute Plugin enabledPlugin;
+ readonly attribute DOMPlugin enabledPlugin;
};
}
diff --git a/WebCore/plugins/MimeTypeArray.cpp b/WebCore/plugins/DOMMimeTypeArray.cpp
index 9d3ad92..f36f2a2 100644
--- a/WebCore/plugins/MimeTypeArray.cpp
+++ b/WebCore/plugins/DOMMimeTypeArray.cpp
@@ -18,26 +18,26 @@
*/
#include "config.h"
-#include "MimeTypeArray.h"
+#include "DOMMimeTypeArray.h"
#include "AtomicString.h"
+#include "DOMPlugin.h"
#include "Frame.h"
#include "Page.h"
-#include "Plugin.h"
#include "PluginData.h"
namespace WebCore {
-MimeTypeArray::MimeTypeArray(Frame* frame)
+DOMMimeTypeArray::DOMMimeTypeArray(Frame* frame)
: m_frame(frame)
{
}
-MimeTypeArray::~MimeTypeArray()
+DOMMimeTypeArray::~DOMMimeTypeArray()
{
}
-unsigned MimeTypeArray::length() const
+unsigned DOMMimeTypeArray::length() const
{
PluginData* data = getPluginData();
if (!data)
@@ -45,7 +45,7 @@ unsigned MimeTypeArray::length() const
return data->mimes().size();
}
-PassRefPtr<MimeType> MimeTypeArray::item(unsigned index)
+PassRefPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index)
{
PluginData* data = getPluginData();
if (!data)
@@ -53,10 +53,10 @@ PassRefPtr<MimeType> MimeTypeArray::item(unsigned index)
const Vector<MimeClassInfo>& mimes = data->mimes();
if (index >= mimes.size())
return 0;
- return MimeType::create(data, index).get();
+ return DOMMimeType::create(data, index).get();
}
-bool MimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
+bool DOMMimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
{
PluginData *data = getPluginData();
if (!data)
@@ -69,7 +69,7 @@ bool MimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
return false;
}
-PassRefPtr<MimeType> MimeTypeArray::namedItem(const AtomicString& propertyName)
+PassRefPtr<DOMMimeType> DOMMimeTypeArray::namedItem(const AtomicString& propertyName)
{
PluginData *data = getPluginData();
if (!data)
@@ -77,12 +77,12 @@ PassRefPtr<MimeType> MimeTypeArray::namedItem(const AtomicString& propertyName)
const Vector<MimeClassInfo>& mimes = data->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i].type == propertyName)
- return MimeType::create(data, i).get();
+ return DOMMimeType::create(data, i).get();
}
return 0;
}
-PluginData* MimeTypeArray::getPluginData() const
+PluginData* DOMMimeTypeArray::getPluginData() const
{
if (!m_frame)
return 0;
diff --git a/WebCore/plugins/MimeTypeArray.h b/WebCore/plugins/DOMMimeTypeArray.h
index a1e3d52..2ccbfa0 100644
--- a/WebCore/plugins/MimeTypeArray.h
+++ b/WebCore/plugins/DOMMimeTypeArray.h
@@ -18,38 +18,38 @@
Boston, MA 02110-1301, USA.
*/
-#ifndef MimeTypeArray_h
-#define MimeTypeArray_h
+#ifndef DOMMimeTypeArray_h
+#define DOMMimeTypeArray_h
-#include "MimeType.h"
+#include "DOMMimeType.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
namespace WebCore {
- class AtomicString;
- class Frame;
- class PluginData;
+class AtomicString;
+class Frame;
+class PluginData;
- class MimeTypeArray : public RefCounted<MimeTypeArray> {
- public:
- static PassRefPtr<MimeTypeArray> create(Frame* frame) { return adoptRef(new MimeTypeArray(frame)); }
- ~MimeTypeArray();
+class DOMMimeTypeArray : public RefCounted<DOMMimeTypeArray> {
+public:
+ static PassRefPtr<DOMMimeTypeArray> create(Frame* frame) { return adoptRef(new DOMMimeTypeArray(frame)); }
+ ~DOMMimeTypeArray();
- void disconnectFrame() { m_frame = 0; }
+ void disconnectFrame() { m_frame = 0; }
- unsigned length() const;
- PassRefPtr<MimeType> item(unsigned index);
- bool canGetItemsForName(const AtomicString& propertyName);
- PassRefPtr<MimeType> namedItem(const AtomicString& propertyName);
+ unsigned length() const;
+ PassRefPtr<DOMMimeType> item(unsigned index);
+ bool canGetItemsForName(const AtomicString& propertyName);
+ PassRefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
- private:
- MimeTypeArray(Frame*);
- PluginData* getPluginData() const;
+private:
+ DOMMimeTypeArray(Frame*);
+ PluginData* getPluginData() const;
- Frame* m_frame;
- };
+ Frame* m_frame;
+};
} // namespace WebCore
diff --git a/WebCore/plugins/MimeTypeArray.idl b/WebCore/plugins/DOMMimeTypeArray.idl
index ecbdc29..8b79a7e 100644
--- a/WebCore/plugins/MimeTypeArray.idl
+++ b/WebCore/plugins/DOMMimeTypeArray.idl
@@ -23,10 +23,10 @@ module window {
interface [
HasNameGetter,
HasIndexGetter
- ] MimeTypeArray {
+ ] DOMMimeTypeArray {
readonly attribute unsigned long length;
- MimeType item(in unsigned long index);
- MimeType namedItem(in DOMString name);
+ DOMMimeType item(in unsigned long index);
+ DOMMimeType namedItem(in DOMString name);
};
}
diff --git a/WebCore/plugins/Plugin.cpp b/WebCore/plugins/DOMPlugin.cpp
index dcbf3f1..11ec929 100644
--- a/WebCore/plugins/Plugin.cpp
+++ b/WebCore/plugins/DOMPlugin.cpp
@@ -17,7 +17,7 @@
*/
#include "config.h"
-#include "Plugin.h"
+#include "DOMPlugin.h"
#include "AtomicString.h"
#include "PluginData.h"
@@ -25,37 +25,37 @@
namespace WebCore {
-Plugin::Plugin(PluginData* pluginData, unsigned index)
+DOMPlugin::DOMPlugin(PluginData* pluginData, unsigned index)
: m_pluginData(pluginData)
, m_index(index)
{
}
-Plugin::~Plugin()
+DOMPlugin::~DOMPlugin()
{
}
-String Plugin::name() const
+String DOMPlugin::name() const
{
return pluginInfo().name;
}
-String Plugin::filename() const
+String DOMPlugin::filename() const
{
return pluginInfo().file;
}
-String Plugin::description() const
+String DOMPlugin::description() const
{
return pluginInfo().desc;
}
-unsigned Plugin::length() const
+unsigned DOMPlugin::length() const
{
return pluginInfo().mimes.size();
}
-PassRefPtr<MimeType> Plugin::item(unsigned index)
+PassRefPtr<DOMMimeType> DOMPlugin::item(unsigned index)
{
if (index >= pluginInfo().mimes.size())
return 0;
@@ -65,12 +65,12 @@ PassRefPtr<MimeType> Plugin::item(unsigned index)
const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i] == mime && m_pluginData->mimePluginIndices()[i] == m_index)
- return MimeType::create(m_pluginData.get(), i).get();
+ return DOMMimeType::create(m_pluginData.get(), i).get();
}
return 0;
}
-bool Plugin::canGetItemsForName(const AtomicString& propertyName)
+bool DOMPlugin::canGetItemsForName(const AtomicString& propertyName)
{
const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i)
@@ -79,12 +79,12 @@ bool Plugin::canGetItemsForName(const AtomicString& propertyName)
return false;
}
-PassRefPtr<MimeType> Plugin::namedItem(const AtomicString& propertyName)
+PassRefPtr<DOMMimeType> DOMPlugin::namedItem(const AtomicString& propertyName)
{
const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i)
if (mimes[i].type == propertyName)
- return MimeType::create(m_pluginData.get(), i).get();
+ return DOMMimeType::create(m_pluginData.get(), i).get();
return 0;
}
diff --git a/WebCore/plugins/Plugin.h b/WebCore/plugins/DOMPlugin.h
index 668a9da..f86234a 100644
--- a/WebCore/plugins/Plugin.h
+++ b/WebCore/plugins/DOMPlugin.h
@@ -17,42 +17,42 @@
Boston, MA 02110-1301, USA.
*/
-#ifndef Plugin_h
-#define Plugin_h
+#ifndef DOMPlugin_h
+#define DOMPlugin_h
-#include "MimeType.h"
+#include "DOMMimeType.h"
#include <wtf/RefPtr.h>
#include <wtf/RefCounted.h>
namespace WebCore {
- class AtomicString;
- class Plugin;
- class PluginData;
- class String;
+class AtomicString;
+class Plugin;
+class PluginData;
+class String;
- class Plugin : public RefCounted<Plugin> {
- public:
- static PassRefPtr<Plugin> create(PluginData* pluginData, unsigned index) { return adoptRef(new Plugin(pluginData, index)); }
- ~Plugin();
+class DOMPlugin : public RefCounted<DOMPlugin> {
+public:
+ static PassRefPtr<DOMPlugin> create(PluginData* pluginData, unsigned index) { return adoptRef(new DOMPlugin(pluginData, index)); }
+ ~DOMPlugin();
- String name() const;
- String filename() const;
- String description() const;
+ String name() const;
+ String filename() const;
+ String description() const;
- unsigned length() const;
+ unsigned length() const;
- PassRefPtr<MimeType> item(unsigned index);
- bool canGetItemsForName(const AtomicString& propertyName);
- PassRefPtr<MimeType> namedItem(const AtomicString& propertyName);
+ PassRefPtr<DOMMimeType> item(unsigned index);
+ bool canGetItemsForName(const AtomicString& propertyName);
+ PassRefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
- private:
- const PluginInfo& pluginInfo() const { return m_pluginData->plugins()[m_index]; }
+private:
+ const PluginInfo& pluginInfo() const { return m_pluginData->plugins()[m_index]; }
- Plugin(PluginData*, unsigned index);
- RefPtr<PluginData> m_pluginData;
- unsigned m_index;
- };
+ DOMPlugin(PluginData*, unsigned index);
+ RefPtr<PluginData> m_pluginData;
+ unsigned m_index;
+};
} // namespace WebCore
diff --git a/WebCore/plugins/Plugin.idl b/WebCore/plugins/DOMPlugin.idl
index b418989..dc2b141 100644
--- a/WebCore/plugins/Plugin.idl
+++ b/WebCore/plugins/DOMPlugin.idl
@@ -23,13 +23,13 @@ module window {
interface [
HasNameGetter,
HasIndexGetter
- ] Plugin {
+ ] DOMPlugin {
readonly attribute DOMString name;
readonly attribute DOMString filename;
readonly attribute DOMString description;
readonly attribute unsigned long length;
- MimeType item(in unsigned long index);
- MimeType namedItem(in DOMString name);
+ DOMMimeType item(in unsigned long index);
+ DOMMimeType namedItem(in DOMString name);
};
}
diff --git a/WebCore/plugins/PluginArray.cpp b/WebCore/plugins/DOMPluginArray.cpp
index 038e4ad..fb11da8 100644
--- a/WebCore/plugins/PluginArray.cpp
+++ b/WebCore/plugins/DOMPluginArray.cpp
@@ -18,26 +18,26 @@
*/
#include "config.h"
-#include "PluginArray.h"
+#include "DOMPluginArray.h"
#include "AtomicString.h"
+#include "DOMPlugin.h"
#include "Frame.h"
#include "Page.h"
-#include "Plugin.h"
#include "PluginData.h"
namespace WebCore {
-PluginArray::PluginArray(Frame* frame)
+DOMPluginArray::DOMPluginArray(Frame* frame)
: m_frame(frame)
{
}
-PluginArray::~PluginArray()
+DOMPluginArray::~DOMPluginArray()
{
}
-unsigned PluginArray::length() const
+unsigned DOMPluginArray::length() const
{
PluginData* data = pluginData();
if (!data)
@@ -45,7 +45,7 @@ unsigned PluginArray::length() const
return data->plugins().size();
}
-PassRefPtr<Plugin> PluginArray::item(unsigned index)
+PassRefPtr<DOMPlugin> DOMPluginArray::item(unsigned index)
{
PluginData* data = pluginData();
if (!data)
@@ -53,10 +53,10 @@ PassRefPtr<Plugin> PluginArray::item(unsigned index)
const Vector<PluginInfo>& plugins = data->plugins();
if (index >= plugins.size())
return 0;
- return Plugin::create(data, index).get();
+ return DOMPlugin::create(data, index).get();
}
-bool PluginArray::canGetItemsForName(const AtomicString& propertyName)
+bool DOMPluginArray::canGetItemsForName(const AtomicString& propertyName)
{
PluginData* data = pluginData();
if (!data)
@@ -69,7 +69,7 @@ bool PluginArray::canGetItemsForName(const AtomicString& propertyName)
return false;
}
-PassRefPtr<Plugin> PluginArray::namedItem(const AtomicString& propertyName)
+PassRefPtr<DOMPlugin> DOMPluginArray::namedItem(const AtomicString& propertyName)
{
PluginData* data = pluginData();
if (!data)
@@ -77,17 +77,17 @@ PassRefPtr<Plugin> PluginArray::namedItem(const AtomicString& propertyName)
const Vector<PluginInfo>& plugins = data->plugins();
for (unsigned i = 0; i < plugins.size(); ++i) {
if (plugins[i].name == propertyName)
- return Plugin::create(data, i).get();
+ return DOMPlugin::create(data, i).get();
}
return 0;
}
-void PluginArray::refresh(bool reload)
+void DOMPluginArray::refresh(bool reload)
{
Page::refreshPlugins(reload);
}
-PluginData* PluginArray::pluginData() const
+PluginData* DOMPluginArray::pluginData() const
{
if (!m_frame)
return 0;
diff --git a/WebCore/plugins/PluginArray.h b/WebCore/plugins/DOMPluginArray.h
index 435db50..0adb70a 100644
--- a/WebCore/plugins/PluginArray.h
+++ b/WebCore/plugins/DOMPluginArray.h
@@ -18,40 +18,40 @@
Boston, MA 02110-1301, USA.
*/
-#ifndef PluginArray_h
-#define PluginArray_h
+#ifndef DOMPluginArray_h
+#define DOMPluginArray_h
-#include "Plugin.h"
+#include "DOMPlugin.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
namespace WebCore {
- class AtomicString;
- class Frame;
- class PluginData;
+class AtomicString;
+class Frame;
+class PluginData;
- class PluginArray : public RefCounted<PluginArray> {
- public:
- static PassRefPtr<PluginArray> create(Frame* frame) { return adoptRef(new PluginArray(frame)); }
- ~PluginArray();
+class DOMPluginArray : public RefCounted<DOMPluginArray> {
+public:
+ static PassRefPtr<DOMPluginArray> create(Frame* frame) { return adoptRef(new DOMPluginArray(frame)); }
+ ~DOMPluginArray();
- void disconnectFrame() { m_frame = 0; }
+ void disconnectFrame() { m_frame = 0; }
- unsigned length() const;
- PassRefPtr<Plugin> item(unsigned index);
- bool canGetItemsForName(const AtomicString& propertyName);
- PassRefPtr<Plugin> namedItem(const AtomicString& propertyName);
+ unsigned length() const;
+ PassRefPtr<DOMPlugin> item(unsigned index);
+ bool canGetItemsForName(const AtomicString& propertyName);
+ PassRefPtr<DOMPlugin> namedItem(const AtomicString& propertyName);
- void refresh(bool reload);
+ void refresh(bool reload);
- private:
- PluginArray(Frame*);
- PluginData* pluginData() const;
+private:
+ DOMPluginArray(Frame*);
+ PluginData* pluginData() const;
- Frame* m_frame;
- };
+ Frame* m_frame;
+};
} // namespace WebCore
diff --git a/WebCore/plugins/PluginArray.idl b/WebCore/plugins/DOMPluginArray.idl
index d4c10ac..4c0d64c 100644
--- a/WebCore/plugins/PluginArray.idl
+++ b/WebCore/plugins/DOMPluginArray.idl
@@ -23,10 +23,10 @@ module window {
interface [
HasNameGetter,
HasIndexGetter
- ] PluginArray {
+ ] DOMPluginArray {
readonly attribute unsigned long length;
- Plugin item(in unsigned long index);
- Plugin namedItem(in DOMString name);
+ DOMPlugin item(in unsigned long index);
+ DOMPlugin namedItem(in DOMString name);
void refresh(in boolean reload);
};
diff --git a/WebCore/plugins/PluginView.cpp b/WebCore/plugins/PluginView.cpp
index 3518443..2f5f342 100644
--- a/WebCore/plugins/PluginView.cpp
+++ b/WebCore/plugins/PluginView.cpp
@@ -304,7 +304,10 @@ PluginView::~PluginView()
ASSERT(!m_lifeSupportTimer.isActive());
- instanceMap().remove(m_instance);
+ // If we failed to find the plug-in, we'll return early in our constructor, and
+ // m_instance will be 0.
+ if (m_instance)
+ instanceMap().remove(m_instance);
if (m_isWaitingToStart)
m_parentFrame->document()->removeMediaCanStartListener(this);
@@ -881,6 +884,7 @@ PluginView::PluginView(Frame* parentFrame, const IntSize& size, PluginPackage* p
, m_paramNames(0)
, m_paramValues(0)
, m_mimeType(mimeType)
+ , m_instance(0)
#if defined(XP_MACOSX)
, m_isWindowed(false)
#else
diff --git a/WebCore/rendering/InlineFlowBox.cpp b/WebCore/rendering/InlineFlowBox.cpp
index c2d8549..8ac8c40 100644
--- a/WebCore/rendering/InlineFlowBox.cpp
+++ b/WebCore/rendering/InlineFlowBox.cpp
@@ -663,11 +663,24 @@ void InlineFlowBox::paint(PaintInfo& paintInfo, int tx, int ty)
// outlines.
if (renderer()->style()->visibility() == VISIBLE && renderer()->hasOutline() && !isRootInlineBox()) {
RenderInline* inlineFlow = toRenderInline(renderer());
- if ((inlineFlow->continuation() || inlineFlow->isInlineElementContinuation()) && !boxModelObject()->hasSelfPaintingLayer()) {
+
+ RenderBlock* cb = 0;
+ bool containingBlockPaintsContinuationOutline = inlineFlow->continuation() || inlineFlow->isInlineElementContinuation();
+ if (containingBlockPaintsContinuationOutline) {
+ cb = renderer()->containingBlock()->containingBlock();
+
+ for (RenderBoxModelObject* box = boxModelObject(); box != cb; box = box->parent()->enclosingBoxModelObject()) {
+ if (box->hasSelfPaintingLayer()) {
+ containingBlockPaintsContinuationOutline = false;
+ break;
+ }
+ }
+ }
+
+ if (containingBlockPaintsContinuationOutline) {
// Add ourselves to the containing block of the entire continuation so that it can
// paint us atomically.
- RenderBlock* block = renderer()->containingBlock()->containingBlock();
- block->addContinuationWithOutline(toRenderInline(renderer()->node()->renderer()));
+ cb->addContinuationWithOutline(toRenderInline(renderer()->node()->renderer()));
} else if (!inlineFlow->isInlineElementContinuation())
paintInfo.outlineObjects->add(inlineFlow);
}
diff --git a/WebCore/rendering/InlineFlowBox.h b/WebCore/rendering/InlineFlowBox.h
index 9589c0a..b4ba59f 100644
--- a/WebCore/rendering/InlineFlowBox.h
+++ b/WebCore/rendering/InlineFlowBox.h
@@ -193,7 +193,7 @@ inline void InlineFlowBox::setHorizontalOverflowPositions(int leftLayoutOverflow
if (!m_overflow) {
if (leftLayoutOverflow == m_x && rightLayoutOverflow == m_x + m_width && leftVisualOverflow == m_x && rightVisualOverflow == m_x + m_width)
return;
- m_overflow.set(new RenderOverflow(IntRect(m_x, m_y, m_width, m_renderer->style(m_firstLine)->font().height())));
+ m_overflow = adoptPtr(new RenderOverflow(IntRect(m_x, m_y, m_width, m_renderer->style(m_firstLine)->font().height())));
}
m_overflow->setLeftLayoutOverflow(leftLayoutOverflow);
@@ -207,7 +207,7 @@ inline void InlineFlowBox::setVerticalOverflowPositions(int topLayoutOverflow, i
if (!m_overflow) {
if (topLayoutOverflow == m_y && bottomLayoutOverflow == m_y + boxHeight && topVisualOverflow == m_y && bottomVisualOverflow == m_y + boxHeight)
return;
- m_overflow.set(new RenderOverflow(IntRect(m_x, m_y, m_width, boxHeight)));
+ m_overflow = adoptPtr(new RenderOverflow(IntRect(m_x, m_y, m_width, boxHeight)));
}
m_overflow->setTopLayoutOverflow(topLayoutOverflow);
diff --git a/WebCore/rendering/MediaControlElements.cpp b/WebCore/rendering/MediaControlElements.cpp
index d5cb187..d4eb9a9 100644
--- a/WebCore/rendering/MediaControlElements.cpp
+++ b/WebCore/rendering/MediaControlElements.cpp
@@ -378,6 +378,9 @@ MediaControlInputElement::MediaControlInputElement(HTMLMediaElement* mediaElemen
case MEDIA_CONTROLS_VOLUME_SLIDER:
m_displayType = MediaVolumeSlider;
break;
+ case MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON:
+ m_displayType = MediaVolumeSliderMuteButton;
+ break;
case MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON:
m_displayType = MediaShowClosedCaptionsButton;
break;
@@ -475,14 +478,14 @@ void MediaControlInputElement::setDisplayType(MediaControlElementType displayTyp
// ----------------------------
-inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(HTMLMediaElement* mediaElement)
- : MediaControlInputElement(mediaElement, MEDIA_CONTROLS_MUTE_BUTTON, "button")
+inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(HTMLMediaElement* mediaElement, ButtonLocation location)
+ : MediaControlInputElement(mediaElement, location == Controller ? MEDIA_CONTROLS_MUTE_BUTTON : MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON, "button")
{
}
-PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(HTMLMediaElement* mediaElement)
+PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(HTMLMediaElement* mediaElement, ButtonLocation location)
{
- return adoptRef(new MediaControlMuteButtonElement(mediaElement));
+ return adoptRef(new MediaControlMuteButtonElement(mediaElement, location));
}
void MediaControlMuteButtonElement::defaultEventHandler(Event* event)
diff --git a/WebCore/rendering/MediaControlElements.h b/WebCore/rendering/MediaControlElements.h
index 68c06a3..ceb0255 100644
--- a/WebCore/rendering/MediaControlElements.h
+++ b/WebCore/rendering/MediaControlElements.h
@@ -65,7 +65,8 @@ enum MediaControlElementType {
MediaControlsPanel,
MediaVolumeSliderContainer,
MediaVolumeSlider,
- MediaVolumeSliderThumb
+ MediaVolumeSliderThumb,
+ MediaVolumeSliderMuteButton,
};
HTMLMediaElement* toParentMediaElement(RenderObject*);
@@ -202,12 +203,13 @@ private:
class MediaControlMuteButtonElement : public MediaControlInputElement {
public:
- static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*);
+ enum ButtonLocation { Controller, VolumeSlider };
+ static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*, ButtonLocation);
virtual void defaultEventHandler(Event*);
private:
- MediaControlMuteButtonElement(HTMLMediaElement*);
+ MediaControlMuteButtonElement(HTMLMediaElement*, ButtonLocation);
virtual void updateDisplayType();
};
diff --git a/WebCore/rendering/RenderBlock.cpp b/WebCore/rendering/RenderBlock.cpp
index dd1e8e5..c97d965 100644
--- a/WebCore/rendering/RenderBlock.cpp
+++ b/WebCore/rendering/RenderBlock.cpp
@@ -2128,16 +2128,6 @@ void RenderBlock::paintChildren(PaintInfo& paintInfo, int tx, int ty)
return;
}
- // Check for page-break-inside: avoid, and it it's set, break and bail.
- bool checkInsideAvoid = !childrenInline() && ((checkPageBreaks && child->style()->pageBreakInside() == PBAVOID) || (checkColumnBreaks && child->style()->columnBreakInside() == PBAVOID));
- if (checkInsideAvoid
- && ty + child->y() > paintInfo.rect.y()
- && ty + child->y() < paintInfo.rect.bottom()
- && ty + child->y() + child->height() > paintInfo.rect.bottom()) {
- view()->setBestTruncatedAt(ty + child->y(), this, true);
- return;
- }
-
if (!child->hasSelfPaintingLayer() && !child->isFloating())
child->paint(info, tx, ty);
@@ -2232,8 +2222,18 @@ void RenderBlock::paintObject(PaintInfo& paintInfo, int tx, int ty)
RenderInline* inlineCont = inlineElementContinuation();
if (inlineCont && inlineCont->hasOutline() && inlineCont->style()->visibility() == VISIBLE) {
RenderInline* inlineRenderer = toRenderInline(inlineCont->node()->renderer());
- if (!inlineRenderer->hasSelfPaintingLayer())
- containingBlock()->addContinuationWithOutline(inlineRenderer);
+ RenderBlock* cb = containingBlock();
+
+ bool inlineEnclosedInSelfPaintingLayer = false;
+ for (RenderBoxModelObject* box = inlineRenderer; box != cb; box = box->parent()->enclosingBoxModelObject()) {
+ if (box->hasSelfPaintingLayer()) {
+ inlineEnclosedInSelfPaintingLayer = true;
+ break;
+ }
+ }
+
+ if (!inlineEnclosedInSelfPaintingLayer)
+ cb->addContinuationWithOutline(inlineRenderer);
else if (!inlineRenderer->firstLineBox())
inlineRenderer->paintOutline(paintInfo.context, tx - x() + inlineRenderer->containingBlock()->x(),
ty - y() + inlineRenderer->containingBlock()->y());
diff --git a/WebCore/rendering/RenderBlockLineLayout.cpp b/WebCore/rendering/RenderBlockLineLayout.cpp
index 1a7f983..46dfd29 100644
--- a/WebCore/rendering/RenderBlockLineLayout.cpp
+++ b/WebCore/rendering/RenderBlockLineLayout.cpp
@@ -1696,7 +1696,7 @@ InlineIterator RenderBlock::findNextLineBreak(InlineBidiResolver& resolver, bool
// Non-zero only when kerning is enabled, in which case we measure words with their trailing
// space, then subtract its width.
- int wordTrailingSpaceWidth = f.typesettingFeatures() & Kerning ? f.spaceWidth() + wordSpacing : 0;
+ int wordTrailingSpaceWidth = f.typesettingFeatures() & Kerning ? f.width(TextRun(&space, 1)) + wordSpacing : 0;
int wrapW = tmpW + inlineWidth(o, !appliedStartWidth, true);
int charWidth = 0;
diff --git a/WebCore/rendering/RenderBoxModelObject.cpp b/WebCore/rendering/RenderBoxModelObject.cpp
index c81289b..077baeb 100644
--- a/WebCore/rendering/RenderBoxModelObject.cpp
+++ b/WebCore/rendering/RenderBoxModelObject.cpp
@@ -27,7 +27,7 @@
#include "RenderBoxModelObject.h"
#include "GraphicsContext.h"
-#include "HTMLElement.h"
+#include "HTMLFrameOwnerElement.h"
#include "HTMLNames.h"
#include "ImageBuffer.h"
#include "Path.h"
diff --git a/WebCore/rendering/RenderButton.cpp b/WebCore/rendering/RenderButton.cpp
index 3ecd382..8357bd4 100644
--- a/WebCore/rendering/RenderButton.cpp
+++ b/WebCore/rendering/RenderButton.cpp
@@ -108,11 +108,6 @@ void RenderButton::setupInnerStyle(RenderStyle* innerStyle)
// safe to modify.
innerStyle->setBoxFlex(1.0f);
innerStyle->setBoxOrient(style()->boxOrient());
-
- innerStyle->setPaddingTop(Length(theme()->buttonInternalPaddingTop(), Fixed));
- innerStyle->setPaddingRight(Length(theme()->buttonInternalPaddingRight(), Fixed));
- innerStyle->setPaddingBottom(Length(theme()->buttonInternalPaddingBottom(), Fixed));
- innerStyle->setPaddingLeft(Length(theme()->buttonInternalPaddingLeft(), Fixed));
}
void RenderButton::updateFromElement()
diff --git a/WebCore/rendering/RenderEmbeddedObject.cpp b/WebCore/rendering/RenderEmbeddedObject.cpp
index 3d6575c..de9ca17 100644
--- a/WebCore/rendering/RenderEmbeddedObject.cpp
+++ b/WebCore/rendering/RenderEmbeddedObject.cpp
@@ -24,6 +24,8 @@
#include "config.h"
#include "RenderEmbeddedObject.h"
+#include "Chrome.h"
+#include "ChromeClient.h"
#include "CSSValueKeywords.h"
#include "Font.h"
#include "FontSelector.h"
@@ -37,6 +39,7 @@
#include "HTMLParamElement.h"
#include "LocalizedStrings.h"
#include "MIMETypeRegistry.h"
+#include "MouseEvent.h"
#include "Page.h"
#include "Path.h"
#include "PluginWidget.h"
@@ -61,13 +64,23 @@ using namespace HTMLNames;
static const float replacementTextRoundedRectHeight = 18;
static const float replacementTextRoundedRectLeftRightTextMargin = 6;
static const float replacementTextRoundedRectOpacity = 0.20f;
+static const float replacementTextPressedRoundedRectOpacity = 0.65f;
static const float replacementTextRoundedRectRadius = 5;
static const float replacementTextTextOpacity = 0.55f;
+static const float replacementTextPressedTextOpacity = 0.65f;
+static const Color& replacementTextRoundedRectPressedColor()
+{
+ static const Color lightGray(205, 205, 205);
+ return lightGray;
+}
+
RenderEmbeddedObject::RenderEmbeddedObject(Element* element)
: RenderPart(element)
, m_hasFallbackContent(false)
, m_showsMissingPluginIndicator(false)
+ , m_missingPluginIndicatorIsPressed(false)
+ , m_mouseDownWasInMissingPluginIndicator(false)
{
view()->frameView()->setIsVisuallyNonEmpty();
}
@@ -356,6 +369,15 @@ void RenderEmbeddedObject::setShowsCrashedPluginIndicator()
m_replacementText = crashedPluginText();
}
+void RenderEmbeddedObject::setMissingPluginIndicatorIsPressed(bool pressed)
+{
+ if (m_missingPluginIndicatorIsPressed == pressed)
+ return;
+
+ m_missingPluginIndicatorIsPressed = pressed;
+ repaint();
+}
+
void RenderEmbeddedObject::paint(PaintInfo& paintInfo, int tx, int ty)
{
if (!m_replacementText.isNull()) {
@@ -378,8 +400,35 @@ void RenderEmbeddedObject::paintReplaced(PaintInfo& paintInfo, int tx, int ty)
if (context->paintingDisabled())
return;
- FloatRect pluginRect = contentBoxRect();
- pluginRect.move(tx, ty);
+ FloatRect contentRect;
+ Path path;
+ FloatRect replacementTextRect;
+ Font font;
+ TextRun run("");
+ float textWidth;
+ if (!getReplacementTextGeometry(tx, ty, contentRect, path, replacementTextRect, font, run, textWidth))
+ return;
+
+ context->save();
+ context->clip(contentRect);
+ context->beginPath();
+ context->addPath(path);
+ context->setAlpha(m_missingPluginIndicatorIsPressed ? replacementTextPressedRoundedRectOpacity : replacementTextRoundedRectOpacity);
+ context->setFillColor(m_missingPluginIndicatorIsPressed ? replacementTextRoundedRectPressedColor() : Color::white, style()->colorSpace());
+ context->fillPath();
+
+ float labelX = roundf(replacementTextRect.location().x() + (replacementTextRect.size().width() - textWidth) / 2);
+ float labelY = roundf(replacementTextRect.location().y() + (replacementTextRect.size().height() - font.height()) / 2 + font.ascent());
+ context->setAlpha(m_missingPluginIndicatorIsPressed ? replacementTextPressedTextOpacity : replacementTextTextOpacity);
+ context->setFillColor(Color::black, style()->colorSpace());
+ context->drawBidiText(font, run, FloatPoint(labelX, labelY));
+ context->restore();
+}
+
+bool RenderEmbeddedObject::getReplacementTextGeometry(int tx, int ty, FloatRect& contentRect, Path& path, FloatRect& replacementTextRect, Font& font, TextRun& run, float& textWidth)
+{
+ contentRect = contentBoxRect();
+ contentRect.move(tx, ty);
FontDescription fontDescription;
RenderTheme::defaultTheme()->systemFont(CSSValueWebkitSmallControl, fontDescription);
@@ -387,36 +436,24 @@ void RenderEmbeddedObject::paintReplaced(PaintInfo& paintInfo, int tx, int ty)
Settings* settings = document()->settings();
ASSERT(settings);
if (!settings)
- return;
+ return false;
fontDescription.setRenderingMode(settings->fontRenderingMode());
fontDescription.setComputedSize(fontDescription.specifiedSize());
- Font font(fontDescription, 0, 0);
+ font = Font(fontDescription, 0, 0);
font.update(0);
- TextRun run(m_replacementText.characters(), m_replacementText.length());
+ run = TextRun(m_replacementText.characters(), m_replacementText.length());
run.disableRoundingHacks();
- float textWidth = font.floatWidth(run);
+ textWidth = font.floatWidth(run);
- FloatRect replacementTextRect;
replacementTextRect.setSize(FloatSize(textWidth + replacementTextRoundedRectLeftRightTextMargin * 2, replacementTextRoundedRectHeight));
- replacementTextRect.setLocation(FloatPoint((pluginRect.size().width() / 2 - replacementTextRect.size().width() / 2) + pluginRect.location().x(),
- (pluginRect.size().height() / 2 - replacementTextRect.size().height() / 2) + pluginRect.location().y()));
-
- Path path = Path::createRoundedRectangle(replacementTextRect, FloatSize(replacementTextRoundedRectRadius, replacementTextRoundedRectRadius));
- context->save();
- context->clip(pluginRect);
- context->beginPath();
- context->addPath(path);
- context->setAlpha(replacementTextRoundedRectOpacity);
- context->setFillColor(Color::white, style()->colorSpace());
- context->fillPath();
+ float x = (contentRect.size().width() / 2 - replacementTextRect.size().width() / 2) + contentRect.location().x();
+ float y = (contentRect.size().height() / 2 - replacementTextRect.size().height() / 2) + contentRect.location().y();
+ replacementTextRect.setLocation(FloatPoint(x, y));
+
+ path = Path::createRoundedRectangle(replacementTextRect, FloatSize(replacementTextRoundedRectRadius, replacementTextRoundedRectRadius));
- FloatPoint labelPoint(roundf(replacementTextRect.location().x() + (replacementTextRect.size().width() - textWidth) / 2),
- roundf(replacementTextRect.location().y()+ (replacementTextRect.size().height() - font.height()) / 2 + font.ascent()));
- context->setAlpha(replacementTextTextOpacity);
- context->setFillColor(Color::black, style()->colorSpace());
- context->drawBidiText(font, run, labelPoint);
- context->restore();
+ return true;
}
void RenderEmbeddedObject::layout()
@@ -455,5 +492,63 @@ void RenderEmbeddedObject::viewCleared()
view->setMarginHeight(marginh);
}
}
+
+bool RenderEmbeddedObject::isInMissingPluginIndicator(MouseEvent* event)
+{
+ FloatRect contentRect;
+ Path path;
+ FloatRect replacementTextRect;
+ Font font;
+ TextRun run("");
+ float textWidth;
+ if (!getReplacementTextGeometry(0, 0, contentRect, path, replacementTextRect, font, run, textWidth))
+ return false;
+
+ return path.contains(absoluteToLocal(event->absoluteLocation(), false, true));
+}
+
+void RenderEmbeddedObject::handleMissingPluginIndicatorEvent(Event* event)
+{
+ if (Page* page = document()->page()) {
+ if (!page->chrome()->client()->shouldMissingPluginMessageBeButton())
+ return;
+ }
+
+ if (!event->isMouseEvent())
+ return;
+
+ MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
+ HTMLPlugInElement* element = static_cast<HTMLPlugInElement*>(node());
+ if (event->type() == eventNames().mousedownEvent && static_cast<MouseEvent*>(event)->button() == LeftButton) {
+ m_mouseDownWasInMissingPluginIndicator = isInMissingPluginIndicator(mouseEvent);
+ if (m_mouseDownWasInMissingPluginIndicator) {
+ if (Frame* frame = document()->frame()) {
+ frame->eventHandler()->setCapturingMouseEventsNode(element);
+ element->setIsCapturingMouseEvents(true);
+ }
+ setMissingPluginIndicatorIsPressed(true);
+ }
+ event->setDefaultHandled();
+ }
+ if (event->type() == eventNames().mouseupEvent && static_cast<MouseEvent*>(event)->button() == LeftButton) {
+ if (m_missingPluginIndicatorIsPressed) {
+ if (Frame* frame = document()->frame()) {
+ frame->eventHandler()->setCapturingMouseEventsNode(0);
+ element->setIsCapturingMouseEvents(false);
+ }
+ setMissingPluginIndicatorIsPressed(false);
+ }
+ if (m_mouseDownWasInMissingPluginIndicator && isInMissingPluginIndicator(mouseEvent)) {
+ if (Page* page = document()->page())
+ page->chrome()->client()->missingPluginButtonClicked(element);
+ }
+ m_mouseDownWasInMissingPluginIndicator = false;
+ event->setDefaultHandled();
+ }
+ if (event->type() == eventNames().mousemoveEvent) {
+ setMissingPluginIndicatorIsPressed(m_mouseDownWasInMissingPluginIndicator && isInMissingPluginIndicator(mouseEvent));
+ event->setDefaultHandled();
+ }
+}
}
diff --git a/WebCore/rendering/RenderEmbeddedObject.h b/WebCore/rendering/RenderEmbeddedObject.h
index bfb7b96..0944094 100644
--- a/WebCore/rendering/RenderEmbeddedObject.h
+++ b/WebCore/rendering/RenderEmbeddedObject.h
@@ -27,6 +27,8 @@
namespace WebCore {
+class MouseEvent;
+
// Renderer for embeds and objects, often, but not always, rendered via plug-ins.
// For example, <embed src="foo.html"> does not invoke a plug-in.
class RenderEmbeddedObject : public RenderPart {
@@ -41,6 +43,8 @@ public:
bool hasFallbackContent() const { return m_hasFallbackContent; }
+ void handleMissingPluginIndicatorEvent(Event*);
+
#if USE(ACCELERATED_COMPOSITING)
virtual bool allowsAcceleratedCompositing() const;
#endif
@@ -58,10 +62,16 @@ private:
virtual void layout();
virtual void viewCleared();
+
+ void setMissingPluginIndicatorIsPressed(bool);
+ bool isInMissingPluginIndicator(MouseEvent*);
+ bool getReplacementTextGeometry(int tx, int ty, FloatRect& contentRect, Path&, FloatRect& replacementTextRect, Font&, TextRun&, float& textWidth);
String m_replacementText;
bool m_hasFallbackContent;
bool m_showsMissingPluginIndicator;
+ bool m_missingPluginIndicatorIsPressed;
+ bool m_mouseDownWasInMissingPluginIndicator;
};
inline RenderEmbeddedObject* toRenderEmbeddedObject(RenderObject* object)
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index a672f4b..d9d2be1 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -59,6 +59,7 @@
#include "FrameView.h"
#include "Gradient.h"
#include "GraphicsContext.h"
+#include "HTMLFrameOwnerElement.h"
#include "HTMLNames.h"
#include "HitTestRequest.h"
#include "HitTestResult.h"
diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp
index c5a7e19..ae01799 100644
--- a/WebCore/rendering/RenderLayerBacking.cpp
+++ b/WebCore/rendering/RenderLayerBacking.cpp
@@ -156,6 +156,14 @@ void RenderLayerBacking::updateCompositedBounds()
setCompositedBounds(layerBounds);
}
+void RenderLayerBacking::updateAfterWidgetResize()
+{
+ if (renderer()->isRenderIFrame()) {
+ if (RenderLayerCompositor* innerCompositor = RenderLayerCompositor::iframeContentsCompositor(toRenderIFrame(renderer())))
+ innerCompositor->updateContentLayerOffset(contentsBox().location());
+ }
+}
+
void RenderLayerBacking::updateAfterLayout(UpdateDepth updateDepth, bool isUpdateRoot)
{
RenderLayerCompositor* layerCompositor = compositor();
@@ -390,12 +398,7 @@ void RenderLayerBacking::updateGraphicsLayerGeometry()
m_graphicsLayer->setContentsRect(contentsBox());
updateDrawsContent();
-
- // If this is an iframe parent, update the iframe content's box
- if (renderer()->isRenderIFrame()) {
- if (RenderLayerCompositor* innerCompositor = RenderLayerCompositor::iframeContentsCompositor(toRenderIFrame(renderer())))
- innerCompositor->updateContentLayerOffset(contentsBox().location());
- }
+ updateAfterWidgetResize();
}
void RenderLayerBacking::updateInternalHierarchy()
@@ -965,20 +968,15 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
// Restore the clip.
restoreClip(context, paintDirtyRect, damageRect);
+
+ // Now walk the sorted list of children with negative z-indices. Only RenderLayers without compositing layers will paint.
+ m_owningLayer->paintList(m_owningLayer->negZOrderList(), rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot, 0, 0);
}
bool forceBlackText = paintBehavior & PaintBehaviorForceBlackText;
bool selectionOnly = paintBehavior & PaintBehaviorSelectionOnly;
if (shouldPaint && (paintingPhase & GraphicsLayerPaintForeground)) {
- // 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();
- if (negZOrderList) {
- for (Vector<RenderLayer*>::iterator it = negZOrderList->begin(); it != negZOrderList->end(); ++it)
- it[0]->paintLayer(rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot);
- }
-
// Set up the clip used when painting our children.
setClip(context, paintDirtyRect, clipRectToApply);
PaintInfo paintInfo(context, clipRectToApply,
@@ -1009,18 +1007,10 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*
}
// Paint any child layers that have overflow.
- Vector<RenderLayer*>* normalFlowList = m_owningLayer->normalFlowList();
- if (normalFlowList) {
- for (Vector<RenderLayer*>::iterator it = normalFlowList->begin(); it != normalFlowList->end(); ++it)
- it[0]->paintLayer(rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot);
- }
+ m_owningLayer->paintList(m_owningLayer->normalFlowList(), rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot, 0, 0);
// Now walk the sorted list of children with positive z-indices.
- Vector<RenderLayer*>* posZOrderList = m_owningLayer->posZOrderList();
- if (posZOrderList) {
- for (Vector<RenderLayer*>::iterator it = posZOrderList->begin(); it != posZOrderList->end(); ++it)
- it[0]->paintLayer(rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot);
- }
+ m_owningLayer->paintList(m_owningLayer->posZOrderList(), rootLayer, context, paintDirtyRect, paintBehavior, paintingRoot, 0, 0);
}
if (shouldPaint && (paintingPhase & GraphicsLayerPaintMask)) {
diff --git a/WebCore/rendering/RenderLayerBacking.h b/WebCore/rendering/RenderLayerBacking.h
index faa553c..16c39da 100644
--- a/WebCore/rendering/RenderLayerBacking.h
+++ b/WebCore/rendering/RenderLayerBacking.h
@@ -110,6 +110,8 @@ public:
IntRect compositedBounds() const;
void setCompositedBounds(const IntRect&);
void updateCompositedBounds();
+
+ void updateAfterWidgetResize();
FloatPoint graphicsLayerToContentsCoordinates(const GraphicsLayer*, const FloatPoint&);
FloatPoint contentsToGraphicsLayerCoordinates(const GraphicsLayer*, const FloatPoint&);
diff --git a/WebCore/rendering/RenderLayerCompositor.cpp b/WebCore/rendering/RenderLayerCompositor.cpp
index d9a8bf1..c485acc 100644
--- a/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/WebCore/rendering/RenderLayerCompositor.cpp
@@ -100,6 +100,7 @@ RenderLayerCompositor::RenderLayerCompositor(RenderView* renderView)
, m_showDebugBorders(false)
, m_showRepaintCounter(false)
, m_compositingConsultsOverlap(true)
+ , m_compositingDependsOnGeometry(false)
, m_compositing(false)
, m_compositingLayersNeedRebuild(false)
, m_rootLayerAttachment(RootLayerUnattached)
@@ -174,7 +175,10 @@ void RenderLayerCompositor::scheduleSync()
void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot)
{
- bool checkForHierarchyUpdate = false;
+ if (!m_compositingDependsOnGeometry && !m_compositing)
+ return;
+
+ bool checkForHierarchyUpdate = m_compositingDependsOnGeometry;
bool needGeometryUpdate = false;
switch (updateType) {
@@ -193,8 +197,6 @@ void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType update
if (!checkForHierarchyUpdate && !needGeometryUpdate)
return;
- ASSERT(inCompositingMode());
-
bool needHierarchyUpdate = m_compositingLayersNeedRebuild;
if (!updateRoot) {
// Only clear the flag if we're updating the entire hierarchy.
@@ -640,7 +642,11 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* layer, O
}
}
}
-
+
+ // If we just entered compositing mode, the root will have become composited.
+ if (layer->isRootLayer() && inCompositingMode())
+ willBeComposited = true;
+
ASSERT(willBeComposited == needsToBeComposited(layer));
// If we have a software transform, and we have layers under us, we need to also
@@ -675,7 +681,7 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* layer, O
// If we're back at the root, and no other layers need to be composited, and the root layer itself doesn't need
// to be composited, then we can drop out of compositing mode altogether.
if (layer->isRootLayer() && !childState.m_subtreeIsCompositing && !requiresCompositingLayer(layer)) {
- m_compositing = false;
+ enableCompositingMode(false);
willBeComposited = false;
}
@@ -1065,7 +1071,7 @@ bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingIFrame() const
// Parent document content needs to be able to render on top of a composited iframe, so correct behavior
// is to have the parent document become composited too. However, this can cause problems on platforms that
// use native views for frames (like Mac), so disable that behavior on those platforms for now.
- Element* ownerElement = enclosingIFrameElement();
+ HTMLFrameOwnerElement* ownerElement = enclosingIFrameElement();
RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0;
if (!renderer || !renderer->isRenderIFrame())
return false;
@@ -1093,9 +1099,9 @@ bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingIFrame() const
#endif
}
-Element* RenderLayerCompositor::enclosingIFrameElement() const
+HTMLFrameOwnerElement* RenderLayerCompositor::enclosingIFrameElement() const
{
- if (Element* ownerElement = m_renderView->document()->ownerElement())
+ if (HTMLFrameOwnerElement* ownerElement = m_renderView->document()->ownerElement())
return ownerElement->hasTagName(iframeTag) ? ownerElement : 0;
return 0;
@@ -1269,7 +1275,22 @@ bool RenderLayerCompositor::requiresCompositingForCanvas(RenderObject* renderer)
bool RenderLayerCompositor::requiresCompositingForPlugin(RenderObject* renderer) const
{
- return renderer->isEmbeddedObject() && toRenderEmbeddedObject(renderer)->allowsAcceleratedCompositing();
+ if (!renderer->isEmbeddedObject())
+ return false;
+
+ RenderEmbeddedObject* embedRenderer = toRenderEmbeddedObject(renderer);
+ if (!embedRenderer->allowsAcceleratedCompositing())
+ return false;
+
+ m_compositingDependsOnGeometry = true;
+
+ // If we can't reliably know the size of the plugin yet, don't change compositing state.
+ if (renderer->needsLayout())
+ return embedRenderer->hasLayer() && embedRenderer->layer()->isComposited();
+
+ // Don't go into compositing mode if height or width are zero, or size is 1x1.
+ IntRect contentBox = embedRenderer->contentBoxRect();
+ return contentBox.height() * contentBox.width() > 1;
}
bool RenderLayerCompositor::requiresCompositingForIFrame(RenderObject* renderer) const
@@ -1277,13 +1298,24 @@ bool RenderLayerCompositor::requiresCompositingForIFrame(RenderObject* renderer)
if (!renderer->isRenderIFrame())
return false;
- RenderIFrame* iframe = toRenderIFrame(renderer);
+ RenderIFrame* iframeRenderer = toRenderIFrame(renderer);
- if (!iframe->requiresAcceleratedCompositing())
+ if (!iframeRenderer->requiresAcceleratedCompositing())
return false;
-
- RenderLayerCompositor* innerCompositor = iframeContentsCompositor(iframe);
- return innerCompositor->shouldPropagateCompositingToEnclosingIFrame();
+
+ m_compositingDependsOnGeometry = true;
+
+ RenderLayerCompositor* innerCompositor = iframeContentsCompositor(iframeRenderer);
+ if (!innerCompositor->shouldPropagateCompositingToEnclosingIFrame())
+ return false;
+
+ // If we can't reliably know the size of the iframe yet, don't change compositing state.
+ if (renderer->needsLayout())
+ return iframeRenderer->hasLayer() && iframeRenderer->layer()->isComposited();
+
+ // Don't go into compositing mode if height or width are zero.
+ IntRect contentBox = iframeRenderer->contentBoxRect();
+ return contentBox.height() * contentBox.width() > 0;
}
bool RenderLayerCompositor::requiresCompositingForAnimation(RenderObject* renderer) const
@@ -1403,7 +1435,7 @@ void RenderLayerCompositor::attachRootPlatformLayer(RootLayerAttachment attachme
case RootLayerAttachedViaEnclosingIframe: {
// The layer will get hooked up via RenderLayerBacking::updateGraphicsLayerConfiguration()
// for the iframe's renderer in the parent document.
- m_renderView->document()->ownerElement()->setNeedsStyleRecalc(SyntheticStyleChange);
+ scheduleNeedsStyleRecalc(m_renderView->document()->ownerElement());
break;
}
}
@@ -1427,7 +1459,7 @@ void RenderLayerCompositor::detachRootPlatformLayer()
m_rootPlatformLayer->removeFromParent();
if (Element* ownerElement = m_renderView->document()->ownerElement())
- ownerElement->setNeedsStyleRecalc(SyntheticStyleChange);
+ scheduleNeedsStyleRecalc(ownerElement);
break;
}
case RootLayerAttachedViaChromeClient: {
@@ -1461,6 +1493,19 @@ void RenderLayerCompositor::rootLayerAttachmentChanged()
backing->updateDrawsContent();
}
+static void needsStyleRecalcCallback(Node* node)
+{
+ node->setNeedsStyleRecalc(SyntheticStyleChange);
+}
+
+void RenderLayerCompositor::scheduleNeedsStyleRecalc(Element* element)
+{
+ if (ContainerNode::postAttachCallbacksAreSuspended())
+ ContainerNode::queuePostAttachCallback(needsStyleRecalcCallback, element);
+ else
+ element->setNeedsStyleRecalc(SyntheticStyleChange);
+}
+
// IFrames are special, because we hook compositing layers together across iframe boundaries
// when both parent and iframe content are composited. So when this frame becomes composited, we have
// to use a synthetic style change to get the iframes into RenderLayers in order to allow them to composite.
@@ -1472,7 +1517,7 @@ void RenderLayerCompositor::notifyIFramesOfCompositingChange()
for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
if (child->document() && child->document()->ownerElement())
- child->document()->ownerElement()->setNeedsStyleRecalc(SyntheticStyleChange);
+ scheduleNeedsStyleRecalc(child->document()->ownerElement());
}
}
diff --git a/WebCore/rendering/RenderLayerCompositor.h b/WebCore/rendering/RenderLayerCompositor.h
index 81f2058..10516ad 100644
--- a/WebCore/rendering/RenderLayerCompositor.h
+++ b/WebCore/rendering/RenderLayerCompositor.h
@@ -34,6 +34,7 @@ namespace WebCore {
#define PROFILE_LAYER_REBUILD 0
class GraphicsLayer;
+class RenderEmbeddedObject;
class RenderIFrame;
#if ENABLE(VIDEO)
class RenderVideo;
@@ -150,7 +151,7 @@ public:
// their parent document.
bool shouldPropagateCompositingToEnclosingIFrame() const;
- Element* enclosingIFrameElement() const;
+ HTMLFrameOwnerElement* enclosingIFrameElement() const;
static RenderLayerCompositor* iframeContentsCompositor(RenderIFrame*);
// Return true if the layers changed.
@@ -201,6 +202,7 @@ private:
void rootLayerAttachmentChanged();
+ void scheduleNeedsStyleRecalc(Element*);
void notifyIFramesOfCompositingChange();
// Whether a running transition or animation enforces the need for a compositing layer.
@@ -224,9 +226,15 @@ private:
bool m_showDebugBorders;
bool m_showRepaintCounter;
bool m_compositingConsultsOverlap;
+
+ // When true, we have to wait until layout has happened before we can decide whether to enter compositing mode,
+ // because only then do we know the final size of plugins and iframes.
+ // FIXME: once set, this is never cleared.
+ mutable bool m_compositingDependsOnGeometry;
+
bool m_compositing;
bool m_compositingLayersNeedRebuild;
-
+
RootLayerAttachment m_rootLayerAttachment;
// Enclosing clipping layer for iframe content
diff --git a/WebCore/rendering/RenderMedia.cpp b/WebCore/rendering/RenderMedia.cpp
index ba60ed0..d7b4a99 100644
--- a/WebCore/rendering/RenderMedia.cpp
+++ b/WebCore/rendering/RenderMedia.cpp
@@ -33,6 +33,7 @@
#include "HTMLNames.h"
#include "MediaControlElements.h"
#include "MouseEvent.h"
+#include "Page.h"
#include "RenderTheme.h"
#include <wtf/CurrentTime.h>
#include <wtf/MathExtras.h>
@@ -135,6 +136,8 @@ void RenderMedia::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
m_timeRemainingDisplay->updateStyle();
if (m_volumeSliderContainer)
m_volumeSliderContainer->updateStyle();
+ if (m_volumeSliderMuteButton)
+ m_volumeSliderMuteButton->updateStyle();
if (m_volumeSlider)
m_volumeSlider->updateStyle();
}
@@ -184,7 +187,7 @@ void RenderMedia::createPanel()
void RenderMedia::createMuteButton()
{
ASSERT(!m_muteButton);
- m_muteButton = MediaControlMuteButtonElement::create(mediaElement());
+ m_muteButton = MediaControlMuteButtonElement::create(mediaElement(), MediaControlMuteButtonElement::Controller);
m_muteButton->attachToParent(m_panel.get());
}
@@ -269,6 +272,14 @@ void RenderMedia::createVolumeSlider()
m_volumeSlider->attachToParent(m_volumeSliderContainer.get());
}
+void RenderMedia::createVolumeSliderMuteButton()
+{
+ ASSERT(!m_volumeSliderMuteButton);
+ m_volumeSliderMuteButton = MediaControlMuteButtonElement::create(mediaElement(), MediaControlMuteButtonElement::VolumeSlider);
+ m_volumeSliderMuteButton->attachToParent(m_volumeSliderContainer.get());
+
+}
+
void RenderMedia::createCurrentTimeDisplay()
{
ASSERT(!m_currentTimeDisplay);
@@ -316,6 +327,7 @@ void RenderMedia::updateControls()
m_fullscreenButton = 0;
m_volumeSliderContainer = 0;
m_volumeSlider = 0;
+ m_volumeSliderMuteButton = 0;
m_controlsShadowRoot = 0;
m_toggleClosedCaptionsButton = 0;
}
@@ -345,8 +357,10 @@ void RenderMedia::updateControls()
createFullscreenButton();
createMuteButton();
createVolumeSliderContainer();
- if (m_volumeSliderContainer)
+ if (m_volumeSliderContainer) {
createVolumeSlider();
+ createVolumeSliderMuteButton();
+ }
m_panel->attach();
}
}
@@ -396,6 +410,8 @@ void RenderMedia::updateControls()
m_fullscreenButton->update();
if (m_volumeSlider)
m_volumeSlider->update();
+ if (m_volumeSliderMuteButton)
+ m_volumeSliderMuteButton->update();
updateTimeDisplay();
updateControlVisibility();
@@ -499,13 +515,13 @@ void RenderMedia::updateVolumeSliderContainer(bool visible)
RefPtr<RenderStyle> s = m_volumeSliderContainer->styleForElement();
int height = s->height().isPercent() ? 0 : s->height().value();
- int x = m_muteButton->renderBox()->offsetLeft();
- int y = m_muteButton->renderBox()->offsetTop() - height;
- FloatPoint absPoint = m_muteButton->renderer()->localToAbsolute(FloatPoint(x, y), true, true);
- if (absPoint.y() < 0)
- y = m_muteButton->renderBox()->offsetTop() + m_muteButton->renderBox()->height();
- m_volumeSliderContainer->setVisible(true);
+ int width = s->width().isPercent() ? 0 : s->width().value();
+ IntPoint offset = document()->page()->theme()->volumeSliderOffsetFromMuteButton(m_muteButton->renderer()->node(), IntSize(width, height));
+ int x = offset.x() + m_muteButton->renderBox()->offsetLeft();
+ int y = offset.y() + m_muteButton->renderBox()->offsetTop();
+
m_volumeSliderContainer->setPosition(x, y);
+ m_volumeSliderContainer->setVisible(true);
m_volumeSliderContainer->update();
m_volumeSlider->update();
} else if (!visible && m_volumeSliderContainer->isVisible()) {
@@ -519,8 +535,15 @@ void RenderMedia::forwardEvent(Event* event)
if (event->isMouseEvent() && m_controlsShadowRoot) {
MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
IntPoint point(mouseEvent->absoluteLocation());
+
+ bool defaultHandled = false;
+ if (m_volumeSliderMuteButton && m_volumeSliderMuteButton->hitTest(point)) {
+ m_volumeSliderMuteButton->defaultEventHandler(event);
+ defaultHandled = event->defaultHandled();
+ }
+
bool showVolumeSlider = false;
- if (m_muteButton && m_muteButton->hitTest(point)) {
+ if (!defaultHandled && m_muteButton && m_muteButton->hitTest(point)) {
m_muteButton->defaultEventHandler(event);
if (event->type() != eventNames().mouseoutEvent)
showVolumeSlider = true;
diff --git a/WebCore/rendering/RenderMedia.h b/WebCore/rendering/RenderMedia.h
index 32d6d65..4c980b5 100644
--- a/WebCore/rendering/RenderMedia.h
+++ b/WebCore/rendering/RenderMedia.h
@@ -104,6 +104,7 @@ private:
void createTimeline();
void createVolumeSliderContainer();
void createVolumeSlider();
+ void createVolumeSliderMuteButton();
void createCurrentTimeDisplay();
void createTimeRemainingDisplay();
void createFullscreenButton();
@@ -131,6 +132,7 @@ private:
RefPtr<MediaControlToggleClosedCaptionsButtonElement> m_toggleClosedCaptionsButton;
RefPtr<MediaControlTimelineElement> m_timeline;
RefPtr<MediaControlVolumeSliderElement> m_volumeSlider;
+ RefPtr<MediaControlMuteButtonElement> m_volumeSliderMuteButton;
RefPtr<MediaControlFullscreenButtonElement> m_fullscreenButton;
RefPtr<MediaControlTimelineContainerElement> m_timelineContainer;
RefPtr<MediaControlVolumeSliderContainerElement> m_volumeSliderContainer;
diff --git a/WebCore/rendering/RenderMediaControlsChromium.cpp b/WebCore/rendering/RenderMediaControlsChromium.cpp
index ffd7a1e..98fdc7b 100644
--- a/WebCore/rendering/RenderMediaControlsChromium.cpp
+++ b/WebCore/rendering/RenderMediaControlsChromium.cpp
@@ -282,6 +282,7 @@ bool RenderMediaControlsChromium::paintMediaControlsPart(MediaControlElementType
return paintMediaVolumeSliderThumb(object, paintInfo, rect);
case MediaTimelineContainer:
return paintMediaTimelineContainer(object, paintInfo, rect);
+ case MediaVolumeSliderMuteButton:
case MediaFullscreenButton:
case MediaSeekBackButton:
case MediaSeekForwardButton:
diff --git a/WebCore/rendering/RenderObject.cpp b/WebCore/rendering/RenderObject.cpp
index 156df15..4ff35eb 100644
--- a/WebCore/rendering/RenderObject.cpp
+++ b/WebCore/rendering/RenderObject.cpp
@@ -555,6 +555,19 @@ RenderBox* RenderObject::enclosingBox() const
return 0;
}
+RenderBoxModelObject* RenderObject::enclosingBoxModelObject() const
+{
+ RenderObject* curr = const_cast<RenderObject*>(this);
+ while (curr) {
+ if (curr->isBoxModelObject())
+ return toRenderBoxModelObject(curr);
+ curr = curr->parent();
+ }
+
+ ASSERT_NOT_REACHED();
+ return 0;
+}
+
RenderBlock* RenderObject::firstLineBlock() const
{
return 0;
@@ -1685,6 +1698,14 @@ StyleDifference RenderObject::adjustStyleDifference(StyleDifference diff, unsign
else if (diff < StyleDifferenceRecompositeLayer)
diff = StyleDifferenceRecompositeLayer;
}
+
+ // The answer to requiresLayer() for plugins and iframes can change outside of the style system,
+ // since it depends on whether we decide to composite these elements. When the layer status of
+ // one of these elements changes, we need to force a layout.
+ if (diff == StyleDifferenceEqual && style() && isBoxModelObject()) {
+ if (hasLayer() != toRenderBoxModelObject(this)->requiresLayer())
+ diff = StyleDifferenceLayout;
+ }
#else
UNUSED_PARAM(contextSensitiveProperties);
#endif
diff --git a/WebCore/rendering/RenderObject.h b/WebCore/rendering/RenderObject.h
index 33271df..3f78e45 100644
--- a/WebCore/rendering/RenderObject.h
+++ b/WebCore/rendering/RenderObject.h
@@ -166,7 +166,8 @@ public:
// Convenience function for getting to the nearest enclosing box of a RenderObject.
RenderBox* enclosingBox() const;
-
+ RenderBoxModelObject* enclosingBoxModelObject() const;
+
virtual bool isEmpty() const { return firstChild() == 0; }
#ifndef NDEBUG
diff --git a/WebCore/rendering/RenderPath.cpp b/WebCore/rendering/RenderPath.cpp
index 0010e3f..27d480d 100644
--- a/WebCore/rendering/RenderPath.cpp
+++ b/WebCore/rendering/RenderPath.cpp
@@ -100,13 +100,7 @@ void RenderPath::layout()
LayoutRepainter repainter(*this, checkForRepaintDuringLayout() && selfNeedsLayout());
SVGStyledTransformableElement* element = static_cast<SVGStyledTransformableElement*>(node());
- // We need to update the Path object whenever the underlying SVGStyledTransformableElement uses relative values
- // as the viewport size may have changed. It would be nice to optimize this to detect these changes, and only
- // update when needed, even when using relative values.
bool needsPathUpdate = m_needsPathUpdate;
- if (!needsPathUpdate && element->hasRelativeLengths())
- needsPathUpdate = true;
-
if (needsPathUpdate) {
m_path = element->toPathData();
m_needsPathUpdate = false;
diff --git a/WebCore/rendering/RenderSVGContainer.cpp b/WebCore/rendering/RenderSVGContainer.cpp
index 27584d9..d4ca69f 100644
--- a/WebCore/rendering/RenderSVGContainer.cpp
+++ b/WebCore/rendering/RenderSVGContainer.cpp
@@ -40,29 +40,24 @@ RenderSVGContainer::RenderSVGContainer(SVGStyledElement* node)
{
}
-bool RenderSVGContainer::drawsContents() const
-{
- return m_drawsContents;
-}
-
-void RenderSVGContainer::setDrawsContents(bool drawsContents)
-{
- m_drawsContents = drawsContents;
-}
-
void RenderSVGContainer::layout()
{
ASSERT(needsLayout());
- ASSERT(!view()->layoutStateEnabled()); // RenderSVGRoot disables layoutState for the SVG rendering tree.
- calcViewport(); // Allow RenderSVGViewportContainer to update its viewport
+ // RenderSVGRoot disables layoutState for the SVG rendering tree.
+ ASSERT(!view()->layoutStateEnabled());
+
+ // Allow RenderSVGViewportContainer to update its viewport.
+ calcViewport();
LayoutRepainter repainter(*this, checkForRepaintDuringLayout() || selfWillPaint());
- calculateLocalTransform(); // Allow RenderSVGTransformableContainer to update its transform
+
+ // Allow RenderSVGTransformableContainer to update its transform.
+ calculateLocalTransform();
SVGRenderSupport::layoutChildren(this, selfNeedsLayout());
- repainter.repaintAfterLayout();
+ repainter.repaintAfterLayout();
setNeedsLayout(false);
}
diff --git a/WebCore/rendering/RenderSVGContainer.h b/WebCore/rendering/RenderSVGContainer.h
index f681e50..53f1a97 100644
--- a/WebCore/rendering/RenderSVGContainer.h
+++ b/WebCore/rendering/RenderSVGContainer.h
@@ -39,8 +39,8 @@ public:
RenderObjectChildList* children() { return &m_children; }
// <marker> uses these methods to only allow drawing children during a special marker draw time
- void setDrawsContents(bool);
- bool drawsContents() const;
+ void setDrawsContents(bool drawsContents) { m_drawsContents = drawsContents; }
+ bool drawsContents() const { return m_drawsContents; }
virtual void paint(PaintInfo&, int parentX, int parentY);
@@ -97,5 +97,3 @@ void toRenderSVGContainer(const RenderSVGContainer*);
#endif // ENABLE(SVG)
#endif // RenderSVGContainer_h
-
-// vim:ts=4:noet
diff --git a/WebCore/rendering/RenderSVGResourceFilter.cpp b/WebCore/rendering/RenderSVGResourceFilter.cpp
index 0062015..19a6ccb 100644
--- a/WebCore/rendering/RenderSVGResourceFilter.cpp
+++ b/WebCore/rendering/RenderSVGResourceFilter.cpp
@@ -219,11 +219,13 @@ bool RenderSVGResourceFilter::applyResource(RenderObject* object, RenderStyle*,
sourceGraphicContext->translate(-clippedSourceRect.x(), -clippedSourceRect.y());
sourceGraphicContext->scale(scale);
sourceGraphicContext->clearRect(FloatRect(FloatPoint(), paintRect.size()));
- filterData->sourceGraphicBuffer.set(sourceGraphic.release());
+ filterData->sourceGraphicBuffer = sourceGraphic.release();
filterData->savedContext = context;
context = sourceGraphicContext;
- m_filter.set(object, filterData.release());
+
+ ASSERT(!m_filter.contains(object));
+ m_filter.set(object, filterData.leakPtr());
return true;
}
diff --git a/WebCore/rendering/RenderSVGResourceGradient.cpp b/WebCore/rendering/RenderSVGResourceGradient.cpp
index 7ea70d2..74f5b13 100644
--- a/WebCore/rendering/RenderSVGResourceGradient.cpp
+++ b/WebCore/rendering/RenderSVGResourceGradient.cpp
@@ -73,17 +73,12 @@ void RenderSVGResourceGradient::invalidateClient(RenderObject* object)
}
#if PLATFORM(CG)
-static inline AffineTransform absoluteTransformForRenderer(const RenderObject* object)
+static inline AffineTransform absoluteTransformFromContext(GraphicsContext* context)
{
- AffineTransform absoluteTransform;
-
- const RenderObject* currentObject = object;
- while (currentObject) {
- absoluteTransform = currentObject->localToParentTransform() * absoluteTransform;
- currentObject = currentObject->parent();
- }
-
- return absoluteTransform;
+ // Extract current transformation matrix used in the original context. Note that this coordinate
+ // system is flipped compared to SVGs internal coordinate system, done in WebKit level. Fix
+ // this transformation by flipping the y component.
+ return context->getCTM() * AffineTransform().flipY();
}
static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& context,
@@ -93,7 +88,7 @@ static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& con
{
const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
- AffineTransform transform = absoluteTransformForRenderer(textRootBlock);
+ AffineTransform transform(absoluteTransformFromContext(context));
FloatRect maskAbsoluteBoundingBox = transform.mapRect(textRootBlock->repaintRectInLocalCoordinates());
IntRect maskImageRect = enclosingIntRect(maskAbsoluteBoundingBox);
@@ -111,7 +106,7 @@ static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& con
maskImageContext->translate(-maskAbsoluteBoundingBox.x(), -maskAbsoluteBoundingBox.y());
maskImageContext->concatCTM(transform);
- imageBuffer.set(maskImage.release());
+ imageBuffer = maskImage.release();
savedContext = context;
context = maskImageContext;
@@ -124,7 +119,13 @@ static inline AffineTransform clipToTextMask(GraphicsContext* context,
GradientData* gradientData)
{
const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
- context->clipToImageBuffer(textRootBlock->repaintRectInLocalCoordinates(), imageBuffer.get());
+
+ // The mask image has been created in the device coordinate space, as the image should not be scaled.
+ // So the actual masking process has to be done in the device coordinate space as well.
+ AffineTransform transform(absoluteTransformFromContext(context));
+ context->concatCTM(transform.inverse());
+ context->clipToImageBuffer(transform.mapRect(textRootBlock->repaintRectInLocalCoordinates()), imageBuffer.get());
+ context->concatCTM(transform);
AffineTransform matrix;
if (gradientData->boundingBoxMode) {
diff --git a/WebCore/rendering/RenderSVGRoot.cpp b/WebCore/rendering/RenderSVGRoot.cpp
index ad3303f..396df19 100644
--- a/WebCore/rendering/RenderSVGRoot.cpp
+++ b/WebCore/rendering/RenderSVGRoot.cpp
@@ -48,6 +48,7 @@ namespace WebCore {
RenderSVGRoot::RenderSVGRoot(SVGStyledElement* node)
: RenderBox(node)
+ , m_isLayoutSizeChanged(false)
{
setReplaced(true);
}
@@ -116,13 +117,14 @@ void RenderSVGRoot::layout()
IntSize oldSize(width(), height());
calcWidth();
calcHeight();
-
calcViewport();
- // RenderSVGRoot needs to take special care to propagate window size changes to the children,
- // if the outermost <svg> is using relative x/y/width/height values. Hence the additonal parameters.
SVGSVGElement* svg = static_cast<SVGSVGElement*>(node());
- SVGRenderSupport::layoutChildren(this, needsLayout || (svg->hasRelativeLengths() && oldSize != size()));
+ m_isLayoutSizeChanged = svg->hasRelativeLengths() && oldSize != size();
+
+ SVGRenderSupport::layoutChildren(this, needsLayout);
+ m_isLayoutSizeChanged = false;
+
repainter.repaintAfterLayout();
view()->enableLayoutState();
@@ -200,9 +202,6 @@ void RenderSVGRoot::calcViewport()
{
SVGSVGElement* svg = static_cast<SVGSVGElement*>(node());
- if (!selfNeedsLayout() && !svg->hasRelativeLengths())
- return;
-
if (!svg->hasSetContainerSize()) {
// In the normal case of <svg> being stand-alone or in a CSSBoxModel object we use
// RenderBox::width()/height() (which pulls data from RenderStyle)
@@ -270,12 +269,17 @@ FloatRect RenderSVGRoot::strokeBoundingBox() const
FloatRect RenderSVGRoot::repaintRectInLocalCoordinates() const
{
- // FIXME: This does not include the border but it should!
FloatRect repaintRect = SVGRenderSupport::computeContainerBoundingBox(this, SVGRenderSupport::RepaintBoundingBox);
style()->svgStyle()->inflateForShadow(repaintRect);
+ repaintRect.inflate(borderAndPaddingWidth());
return repaintRect;
}
+IntRect RenderSVGRoot::clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer)
+{
+ return SVGRenderSupport::clippedOverflowRectForRepaint(this, repaintContainer);
+}
+
void RenderSVGRoot::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
{
// Apply our local transforms (except for x/y translation), then our shadow,
diff --git a/WebCore/rendering/RenderSVGRoot.h b/WebCore/rendering/RenderSVGRoot.h
index 48263aa..0a08ab5 100644
--- a/WebCore/rendering/RenderSVGRoot.h
+++ b/WebCore/rendering/RenderSVGRoot.h
@@ -40,6 +40,8 @@ public:
const RenderObjectChildList* children() const { return &m_children; }
RenderObjectChildList* children() { return &m_children; }
+ bool isLayoutSizeChanged() const { return m_isLayoutSizeChanged; }
+
private:
virtual RenderObjectChildList* virtualChildren() { return children(); }
virtual const RenderObjectChildList* virtualChildren() const { return children(); }
@@ -68,6 +70,7 @@ private:
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
+ virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer);
virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed);
virtual void mapLocalToContainer(RenderBoxModelObject* repaintContainer, bool useTransforms, bool fixed, TransformState&) const;
@@ -84,6 +87,7 @@ private:
RenderObjectChildList m_children;
FloatSize m_viewportSize;
mutable AffineTransform m_localToParentTransform;
+ bool m_isLayoutSizeChanged : 1;
};
inline RenderSVGRoot* toRenderSVGRoot(RenderObject* object)
diff --git a/WebCore/rendering/RenderSVGViewportContainer.cpp b/WebCore/rendering/RenderSVGViewportContainer.cpp
index ca735d2..f314bde 100644
--- a/WebCore/rendering/RenderSVGViewportContainer.cpp
+++ b/WebCore/rendering/RenderSVGViewportContainer.cpp
@@ -45,18 +45,13 @@ void RenderSVGViewportContainer::applyViewportClip(PaintInfo& paintInfo)
void RenderSVGViewportContainer::calcViewport()
{
- SVGElement* svgelem = static_cast<SVGElement*>(node());
- if (svgelem->hasTagName(SVGNames::svgTag)) {
- SVGSVGElement* svg = static_cast<SVGSVGElement*>(node());
-
- if (!selfNeedsLayout() && !svg->hasRelativeLengths())
- return;
-
- float x = svg->x().value(svg);
- float y = svg->y().value(svg);
- float w = svg->width().value(svg);
- float h = svg->height().value(svg);
- m_viewport = FloatRect(x, y, w, h);
+ SVGElement* element = static_cast<SVGElement*>(node());
+ if (element->hasTagName(SVGNames::svgTag)) {
+ SVGSVGElement* svg = static_cast<SVGSVGElement*>(element);
+ m_viewport = FloatRect(svg->x().value(svg)
+ , svg->y().value(svg)
+ , svg->width().value(svg)
+ , svg->height().value(svg));
}
}
diff --git a/WebCore/rendering/RenderTheme.cpp b/WebCore/rendering/RenderTheme.cpp
index 2c6e9da..2147b36 100644
--- a/WebCore/rendering/RenderTheme.cpp
+++ b/WebCore/rendering/RenderTheme.cpp
@@ -1,7 +1,7 @@
/**
* This file is part of the theme implementation for form controls in WebCore.
*
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 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
@@ -341,6 +341,8 @@ bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const IntRe
if (o->parent()->isSlider())
return paintMediaSliderThumb(o, paintInfo, r);
break;
+ case MediaVolumeSliderMuteButtonPart:
+ return paintMediaMuteButton(o, paintInfo, r);
case MediaVolumeSliderContainerPart:
return paintMediaVolumeSliderContainer(o, paintInfo, r);
case MediaVolumeSliderPart:
@@ -538,6 +540,15 @@ String RenderTheme::formatMediaControlsRemainingTime(float currentTime, float du
return formatMediaControlsTime(currentTime - duration);
}
+IntPoint RenderTheme::volumeSliderOffsetFromMuteButton(Node* muteButton, const IntSize& size) const
+{
+ int y = -size.height();
+ FloatPoint absPoint = muteButton->renderer()->localToAbsolute(FloatPoint(muteButton->renderBox()->offsetLeft(), y), true, true);
+ if (absPoint.y() < 0)
+ y = muteButton->renderBox()->height();
+ return IntPoint(0, y);
+}
+
#endif
Color RenderTheme::activeSelectionBackgroundColor() const
diff --git a/WebCore/rendering/RenderTheme.h b/WebCore/rendering/RenderTheme.h
index 47217ca..1e0b54c 100644
--- a/WebCore/rendering/RenderTheme.h
+++ b/WebCore/rendering/RenderTheme.h
@@ -1,7 +1,7 @@
/*
* This file is part of the theme implementation for form controls in WebCore.
*
- * Copyright (C) 2005, 2006, 2007, 2008 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 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
@@ -165,11 +165,6 @@ public:
virtual int popupInternalPaddingBottom(RenderStyle*) const { return 0; }
virtual bool popupOptionSupportsTextIndent() const { return false; }
- virtual int buttonInternalPaddingLeft() const { return 0; }
- virtual int buttonInternalPaddingRight() const { return 0; }
- virtual int buttonInternalPaddingTop() const { return 0; }
- virtual int buttonInternalPaddingBottom() const { return 0; }
-
virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return RegularScrollbar; }
// Method for painting the caps lock indicator
@@ -191,6 +186,9 @@ public:
virtual String formatMediaControlsTime(float time) const;
virtual String formatMediaControlsCurrentTime(float currentTime, float duration) const;
virtual String formatMediaControlsRemainingTime(float currentTime, float duration) const;
+
+ // Returns the media volume slider container's offset from the mute button.
+ virtual IntPoint volumeSliderOffsetFromMuteButton(Node*, const IntSize&) const;
#endif
#if ENABLE(METER_TAG)
diff --git a/WebCore/rendering/RenderThemeMac.h b/WebCore/rendering/RenderThemeMac.h
index 44d9189..95661b8 100644
--- a/WebCore/rendering/RenderThemeMac.h
+++ b/WebCore/rendering/RenderThemeMac.h
@@ -1,7 +1,7 @@
/*
* This file is part of the theme implementation for form controls in WebCore.
*
- * Copyright (C) 2005 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 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
@@ -156,12 +156,16 @@ protected:
virtual bool paintMediaControlsBackground(RenderObject*, const PaintInfo&, const IntRect&);
virtual bool paintMediaCurrentTime(RenderObject*, const PaintInfo&, const IntRect&);
virtual bool paintMediaTimeRemaining(RenderObject*, const PaintInfo&, const IntRect&);
+ virtual bool paintMediaVolumeSliderContainer(RenderObject*, const PaintInfo&, const IntRect&);
+ virtual bool paintMediaVolumeSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
+ virtual bool paintMediaVolumeSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
// Media controls
virtual String extraMediaControlsStyleSheet();
virtual bool shouldRenderMediaControlPart(ControlPart, Element*);
virtual void adjustMediaSliderThumbSize(RenderObject*) const;
+ virtual IntPoint volumeSliderOffsetFromMuteButton(Node*, const IntSize&) const;
#endif
private:
diff --git a/WebCore/rendering/RenderThemeMac.mm b/WebCore/rendering/RenderThemeMac.mm
index 993bc72..bbf6906 100644
--- a/WebCore/rendering/RenderThemeMac.mm
+++ b/WebCore/rendering/RenderThemeMac.mm
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 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
@@ -1686,14 +1686,16 @@ void RenderThemeMac::adjustSliderThumbSize(RenderObject* o) const
void RenderThemeMac::adjustMediaSliderThumbSize(RenderObject* o) const
{
- if (o->style()->appearance() == MediaSliderThumbPart) {
+ ControlPart part = o->style()->appearance();
+
+ if (part == MediaSliderThumbPart || part == MediaVolumeSliderThumbPart) {
int width = mediaSliderThumbWidth;
int height = mediaSliderThumbHeight;
if (mediaControllerTheme() == MediaControllerThemeQuickTime) {
CGSize size;
- wkMeasureMediaUIPart(MediaSliderThumb, MediaControllerThemeQuickTime, NULL, &size);
+ wkMeasureMediaUIPart(part == MediaSliderThumbPart ? MediaSliderThumb : MediaVolumeSliderThumb, MediaControllerThemeQuickTime, NULL, &size);
width = size.width;
height = size.height;
}
@@ -1913,13 +1915,46 @@ bool RenderThemeMac::paintMediaTimeRemaining(RenderObject* o, const PaintInfo& p
return false;
}
+bool RenderThemeMac::paintMediaVolumeSliderContainer(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+ Node* node = o->node();
+ if (!node)
+ return false;
+
+ LocalCurrentGraphicsContext localContext(paintInfo.context);
+ wkDrawMediaUIPart(MediaVolumeSliderContainer, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+ return false;
+}
+
+bool RenderThemeMac::paintMediaVolumeSliderTrack(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+ Node* node = o->node();
+ if (!node)
+ return false;
+
+ LocalCurrentGraphicsContext localContext(paintInfo.context);
+ wkDrawMediaUIPart(MediaVolumeSlider, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+ return false;
+}
+
+bool RenderThemeMac::paintMediaVolumeSliderThumb(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+ Node* node = o->node();
+ if (!node)
+ return false;
+
+ LocalCurrentGraphicsContext localContext(paintInfo.context);
+ wkDrawMediaUIPart(MediaVolumeSliderThumb, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+ return false;
+}
+
String RenderThemeMac::extraMediaControlsStyleSheet()
{
#if PLATFORM(MAC)
if (mediaControllerTheme() == MediaControllerThemeQuickTime)
return String(mediaControlsQuickTimeUserAgentStyleSheet, sizeof(mediaControlsQuickTimeUserAgentStyleSheet));
- else
- return String();
+
+ return String();
#else
ASSERT_NOT_REACHED();
return String();
@@ -1928,16 +1963,38 @@ String RenderThemeMac::extraMediaControlsStyleSheet()
bool RenderThemeMac::shouldRenderMediaControlPart(ControlPart part, Element* element)
{
- if (part == MediaToggleClosedCaptionsButtonPart) {
-
+ switch (part) {
+ case MediaVolumeSliderContainerPart:
+ case MediaVolumeSliderPart:
+ case MediaVolumeSliderMuteButtonPart:
+ case MediaVolumeSliderThumbPart: {
+ HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(element);
+ return mediaControllerTheme() == MediaControllerThemeQuickTime && mediaElement->hasAudio();
+ }
+ case MediaToggleClosedCaptionsButtonPart:
// We rely on QTKit to render captions so don't enable the button unless it will be able to do so.
if (!element->hasTagName(videoTag))
return false;
+ default:
+ break;
}
return RenderTheme::shouldRenderMediaControlPart(part, element);
}
+IntPoint RenderThemeMac::volumeSliderOffsetFromMuteButton(Node* muteButton, const IntSize& size) const
+{
+ static const int xOffset = -4;
+ static const int yOffset = 5;
+
+ float zoomLevel = muteButton->renderer()->style()->effectiveZoom();
+ int y = yOffset * zoomLevel + muteButton->renderBox()->offsetHeight() - size.height();
+ FloatPoint absPoint = muteButton->renderer()->localToAbsolute(FloatPoint(muteButton->renderBox()->offsetLeft(), y), true, true);
+ if (absPoint.y() < 0)
+ y = muteButton->renderBox()->height();
+ return IntPoint(xOffset * zoomLevel, y);
+}
+
#endif // ENABLE(VIDEO)
NSPopUpButtonCell* RenderThemeMac::popupButton() const
diff --git a/WebCore/rendering/RenderThemeWin.cpp b/WebCore/rendering/RenderThemeWin.cpp
index 38daf98..45965e6 100644
--- a/WebCore/rendering/RenderThemeWin.cpp
+++ b/WebCore/rendering/RenderThemeWin.cpp
@@ -761,26 +761,6 @@ void RenderThemeWin::adjustSliderThumbSize(RenderObject* o) const
#endif
}
-int RenderThemeWin::buttonInternalPaddingLeft() const
-{
- return 3;
-}
-
-int RenderThemeWin::buttonInternalPaddingRight() const
-{
- return 3;
-}
-
-int RenderThemeWin::buttonInternalPaddingTop() const
-{
- return 1;
-}
-
-int RenderThemeWin::buttonInternalPaddingBottom() const
-{
- return 1;
-}
-
bool RenderThemeWin::paintSearchField(RenderObject* o, const PaintInfo& i, const IntRect& r)
{
return paintTextField(o, i, r);
diff --git a/WebCore/rendering/RenderThemeWin.h b/WebCore/rendering/RenderThemeWin.h
index 2e80032..0147900 100644
--- a/WebCore/rendering/RenderThemeWin.h
+++ b/WebCore/rendering/RenderThemeWin.h
@@ -94,11 +94,6 @@ public:
virtual bool popupOptionSupportsTextIndent() const { return true; }
- virtual int buttonInternalPaddingLeft() const;
- virtual int buttonInternalPaddingRight() const;
- virtual int buttonInternalPaddingTop() const;
- virtual int buttonInternalPaddingBottom() const;
-
virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&);
diff --git a/WebCore/rendering/RenderThemeWince.cpp b/WebCore/rendering/RenderThemeWince.cpp
index 4fd6de9..117601b 100644
--- a/WebCore/rendering/RenderThemeWince.cpp
+++ b/WebCore/rendering/RenderThemeWince.cpp
@@ -528,26 +528,6 @@ bool RenderThemeWince::paintSliderThumb(RenderObject* o, const PaintInfo& i, con
return rc;
}
-int RenderThemeWince::buttonInternalPaddingLeft() const
-{
- return 3;
-}
-
-int RenderThemeWince::buttonInternalPaddingRight() const
-{
- return 3;
-}
-
-int RenderThemeWince::buttonInternalPaddingTop() const
-{
- return 1;
-}
-
-int RenderThemeWince::buttonInternalPaddingBottom() const
-{
- return 1;
-}
-
void RenderThemeWince::adjustSearchFieldStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
{
const int padding = 1;
@@ -665,4 +645,3 @@ bool RenderThemeWince::paintMediaSliderThumb(RenderObject* o, const PaintInfo& p
#endif
}
-
diff --git a/WebCore/rendering/RenderThemeWince.h b/WebCore/rendering/RenderThemeWince.h
index 61a4ac5..c1b57d4 100644
--- a/WebCore/rendering/RenderThemeWince.h
+++ b/WebCore/rendering/RenderThemeWince.h
@@ -93,11 +93,6 @@ namespace WebCore {
virtual bool popupOptionSupportsTextIndent() const { return true; }
- virtual int buttonInternalPaddingLeft() const;
- virtual int buttonInternalPaddingRight() const;
- virtual int buttonInternalPaddingTop() const;
- virtual int buttonInternalPaddingBottom() const;
-
virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&);
diff --git a/WebCore/rendering/RenderView.cpp b/WebCore/rendering/RenderView.cpp
index eb920a2..232dd5d 100644
--- a/WebCore/rendering/RenderView.cpp
+++ b/WebCore/rendering/RenderView.cpp
@@ -27,6 +27,7 @@
#include "Frame.h"
#include "FrameView.h"
#include "GraphicsContext.h"
+#include "HTMLFrameOwnerElement.h"
#include "HitTestResult.h"
#include "RenderLayer.h"
#include "RenderSelectionInfo.h"
diff --git a/WebCore/rendering/RenderWidget.cpp b/WebCore/rendering/RenderWidget.cpp
index bba14e2..bebe6c8 100644
--- a/WebCore/rendering/RenderWidget.cpp
+++ b/WebCore/rendering/RenderWidget.cpp
@@ -32,6 +32,10 @@
#include "RenderView.h"
#include "RenderWidgetProtector.h"
+#if USE(ACCELERATED_COMPOSITING)
+#include "RenderLayerBacking.h"
+#endif
+
using namespace std;
namespace WebCore {
@@ -171,6 +175,12 @@ bool RenderWidget::setWidgetGeometry(const IntRect& frame)
RenderWidgetProtector protector(this);
RefPtr<Node> protectedNode(node());
m_widget->setFrameRect(frame);
+
+#if USE(ACCELERATED_COMPOSITING)
+ if (hasLayer() && layer()->isComposited())
+ layer()->backing()->updateAfterWidgetResize();
+#endif
+
return boundsChanged;
}
diff --git a/WebCore/rendering/RootInlineBox.h b/WebCore/rendering/RootInlineBox.h
index 86f633d..ff98f24 100644
--- a/WebCore/rendering/RootInlineBox.h
+++ b/WebCore/rendering/RootInlineBox.h
@@ -118,7 +118,7 @@ public:
{
ASSERT(!isDirty());
if (!m_floats)
- m_floats.set(new Vector<RenderBox*>());
+ m_floats= adoptPtr(new Vector<RenderBox*>);
return *m_floats;
}
diff --git a/WebCore/rendering/SVGRenderSupport.cpp b/WebCore/rendering/SVGRenderSupport.cpp
index a328031..0d4a42b 100644
--- a/WebCore/rendering/SVGRenderSupport.cpp
+++ b/WebCore/rendering/SVGRenderSupport.cpp
@@ -32,12 +32,14 @@
#include "ImageBuffer.h"
#include "NodeRenderStyle.h"
#include "RenderLayer.h"
+#include "RenderPath.h"
#include "RenderSVGContainer.h"
#include "RenderSVGResource.h"
#include "RenderSVGResourceClipper.h"
#include "RenderSVGResourceFilter.h"
#include "RenderSVGResourceMarker.h"
#include "RenderSVGResourceMasker.h"
+#include "RenderSVGRoot.h"
#include "SVGStyledElement.h"
#include "TransformState.h"
#include <wtf/UnusedParam.h>
@@ -230,25 +232,42 @@ FloatRect SVGRenderSupport::computeContainerBoundingBox(const RenderObject* cont
return boundingBox;
}
+static inline RenderSVGRoot* svgRootTreeObject(RenderObject* start)
+{
+ while (start && !start->isSVGRoot())
+ start = start->parent();
+
+ ASSERT(start);
+ ASSERT(start->isSVGRoot());
+ return toRenderSVGRoot(start);
+}
+
void SVGRenderSupport::layoutChildren(RenderObject* start, bool selfNeedsLayout)
{
+ bool layoutSizeChanged = svgRootTreeObject(start)->isLayoutSizeChanged();
+
for (RenderObject* child = start->firstChild(); child; child = child->nextSibling()) {
- // Only force our kids to layout if we're being asked to relayout as a result of a parent changing
- // FIXME: We should be able to skip relayout of non-relative kids when only bounds size has changed
- // that's a possible future optimization using LayoutState
- // http://bugs.webkit.org/show_bug.cgi?id=15391
bool needsLayout = selfNeedsLayout;
- if (!needsLayout) {
+
+ if (layoutSizeChanged) {
+ // When selfNeedsLayout is false and the layout size changed, we have to check whether this child uses relative lengths
if (SVGElement* element = child->node()->isSVGElement() ? static_cast<SVGElement*>(child->node()) : 0) {
- if (element->isStyled())
- needsLayout = static_cast<SVGStyledElement*>(element)->hasRelativeLengths();
+ if (element->isStyled() && static_cast<SVGStyledElement*>(element)->hasRelativeLengths()) {
+ // When the layout size changed and when using relative values tell the RenderPath to update its Path object
+ if (child->isRenderPath())
+ toRenderPath(child)->setNeedsPathUpdate();
+
+ needsLayout = true;
+ }
}
}
- if (needsLayout)
+ if (needsLayout) {
child->setNeedsLayout(true, false);
+ child->layout();
+ } else
+ child->layoutIfNeeded();
- child->layoutIfNeeded();
ASSERT(!child->needsLayout());
}
}
diff --git a/WebCore/rendering/style/RenderStyle.cpp b/WebCore/rendering/style/RenderStyle.cpp
index a386fc6..ce6c98e 100644
--- a/WebCore/rendering/style/RenderStyle.cpp
+++ b/WebCore/rendering/style/RenderStyle.cpp
@@ -586,7 +586,7 @@ void RenderStyle::setContent(PassRefPtr<StyleImage> image, bool add)
ContentData* newContentData;
if (reuseContent && content) {
content->clear();
- newContentData = content.release();
+ newContentData = content.leakPtr();
} else
newContentData = new ContentData;
@@ -622,7 +622,7 @@ void RenderStyle::setContent(PassRefPtr<StringImpl> s, bool add)
ContentData* newContentData = 0;
if (reuseContent && content) {
content->clear();
- newContentData = content.release();
+ newContentData = content.leakPtr();
} else
newContentData = new ContentData;
@@ -648,7 +648,7 @@ void RenderStyle::setContent(CounterContent* c, bool add)
ContentData* newContentData = 0;
if (reuseContent && content) {
content->clear();
- newContentData = content.release();
+ newContentData = content.leakPtr();
} else
newContentData = new ContentData;
@@ -732,7 +732,7 @@ void RenderStyle::setBoxShadow(ShadowData* shadowData, bool add)
return;
}
- shadowData->setNext(rareData->m_boxShadow.release());
+ shadowData->setNext(rareData->m_boxShadow.leakPtr());
rareData->m_boxShadow.set(shadowData);
}
diff --git a/WebCore/rendering/style/RenderStyle.h b/WebCore/rendering/style/RenderStyle.h
index 748842b..782508e 100644
--- a/WebCore/rendering/style/RenderStyle.h
+++ b/WebCore/rendering/style/RenderStyle.h
@@ -1029,8 +1029,8 @@ public:
rareNonInheritedData.access()->m_transitions.clear();
}
- void inheritAnimations(const AnimationList* parent) { rareNonInheritedData.access()->m_animations.set(parent ? new AnimationList(*parent) : 0); }
- void inheritTransitions(const AnimationList* parent) { rareNonInheritedData.access()->m_transitions.set(parent ? new AnimationList(*parent) : 0); }
+ void inheritAnimations(const AnimationList* parent) { rareNonInheritedData.access()->m_animations = parent ? adoptPtr(new AnimationList(*parent)) : PassOwnPtr<AnimationList>(); }
+ void inheritTransitions(const AnimationList* parent) { rareNonInheritedData.access()->m_transitions = parent ? adoptPtr(new AnimationList(*parent)) : PassOwnPtr<AnimationList>(); }
void adjustAnimations();
void adjustTransitions();
diff --git a/WebCore/rendering/style/RenderStyleConstants.h b/WebCore/rendering/style/RenderStyleConstants.h
index dd82433..70b128b 100644
--- a/WebCore/rendering/style/RenderStyleConstants.h
+++ b/WebCore/rendering/style/RenderStyleConstants.h
@@ -2,7 +2,7 @@
* Copyright (C) 2000 Lars Knoll (knoll@kde.org)
* (C) 2000 Antti Koivisto (koivisto@kde.org)
* (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 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/)
*
@@ -70,7 +70,8 @@ enum PseudoId {
NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, FILE_UPLOAD_BUTTON, INPUT_PLACEHOLDER,
SLIDER_THUMB, SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL,
MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIMELINE_CONTAINER,
- MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY,
+ MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON,
+ MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY,
MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON, MEDIA_CONTROLS_FULLSCREEN_BUTTON, MEDIA_CONTROLS_REWIND_BUTTON,
MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON,
MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
diff --git a/WebCore/rendering/style/SVGRenderStyleDefs.h b/WebCore/rendering/style/SVGRenderStyleDefs.h
index 207cefa..5173894 100644
--- a/WebCore/rendering/style/SVGRenderStyleDefs.h
+++ b/WebCore/rendering/style/SVGRenderStyleDefs.h
@@ -29,10 +29,12 @@
#define SVGRenderStyleDefs_h
#if ENABLE(SVG)
+
#include "Color.h"
#include "PlatformString.h"
#include "ShadowData.h"
#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
@@ -67,8 +69,8 @@
#define SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_OWNPTR(Data, Group, Variable, Type, Name, Initial) \
Data* Name() const { return Group->Variable.get(); } \
- void set##Type(Data* obj) { \
- Group.access()->Variable.set(obj); \
+ void set##Type(PassOwnPtr<Data> obj) { \
+ Group.access()->Variable = obj; \
} \
static Data* initial##Type() { return Initial; }
@@ -300,4 +302,5 @@ namespace WebCore {
} // namespace WebCore
#endif // ENABLE(SVG)
+
#endif // SVGRenderStyleDefs_h
diff --git a/WebCore/storage/IDBAny.cpp b/WebCore/storage/IDBAny.cpp
index 73b0d74..9a18980 100644
--- a/WebCore/storage/IDBAny.cpp
+++ b/WebCore/storage/IDBAny.cpp
@@ -62,6 +62,12 @@ PassRefPtr<IDBIndexRequest> IDBAny::idbIndexRequest()
return m_idbIndexRequest;
}
+PassRefPtr<IDBKey> IDBAny::idbKey()
+{
+ ASSERT(m_type == IDBKeyType);
+ return m_idbKey;
+}
+
PassRefPtr<IDBObjectStoreRequest> IDBAny::idbObjectStoreRequest()
{
ASSERT(m_type == IDBObjectStoreRequestType);
@@ -100,6 +106,13 @@ void IDBAny::set(PassRefPtr<IDBIndexRequest> value)
m_idbIndexRequest = value;
}
+void IDBAny::set(PassRefPtr<IDBKey> value)
+{
+ ASSERT(m_type == UndefinedType);
+ m_type = IDBKeyType;
+ m_idbKey = value;
+}
+
void IDBAny::set(PassRefPtr<IDBObjectStoreRequest> value)
{
ASSERT(m_type == UndefinedType);
diff --git a/WebCore/storage/IDBAny.h b/WebCore/storage/IDBAny.h
index a734d13..ff2d6b9 100644
--- a/WebCore/storage/IDBAny.h
+++ b/WebCore/storage/IDBAny.h
@@ -36,6 +36,7 @@ namespace WebCore {
class IDBDatabaseRequest;
class IDBIndexRequest;
+class IDBKey;
class IDBObjectStoreRequest;
class IndexedDatabaseRequest;
class SerializedScriptValue;
@@ -50,6 +51,7 @@ public:
NullType,
IDBDatabaseRequestType,
IDBIndexRequestType,
+ IDBKeyType,
IDBObjectStoreRequestType,
IndexedDatabaseRequestType,
SerializedScriptValueType
@@ -59,6 +61,7 @@ public:
// Use type() to figure out which one of these you're allowed to call.
PassRefPtr<IDBDatabaseRequest> idbDatabaseRequest();
PassRefPtr<IDBIndexRequest> idbIndexRequest();
+ PassRefPtr<IDBKey> idbKey();
PassRefPtr<IDBObjectStoreRequest> idbObjectStoreRequest();
PassRefPtr<IndexedDatabaseRequest> indexedDatabaseRequest();
PassRefPtr<SerializedScriptValue> serializedScriptValue();
@@ -67,6 +70,7 @@ public:
void set(); // For "null".
void set(PassRefPtr<IDBDatabaseRequest>);
void set(PassRefPtr<IDBIndexRequest>);
+ void set(PassRefPtr<IDBKey>);
void set(PassRefPtr<IDBObjectStoreRequest>);
void set(PassRefPtr<IndexedDatabaseRequest>);
void set(PassRefPtr<SerializedScriptValue>);
@@ -79,6 +83,7 @@ private:
// Only one of the following should ever be in use at any given time.
RefPtr<IDBDatabaseRequest> m_idbDatabaseRequest;
RefPtr<IDBIndexRequest> m_idbIndexRequest;
+ RefPtr<IDBKey> m_idbKey;
RefPtr<IDBObjectStoreRequest> m_idbObjectStoreRequest;
RefPtr<IndexedDatabaseRequest> m_indexedDatabaseRequest;
RefPtr<SerializedScriptValue> m_serializedScriptValue;
diff --git a/WebCore/storage/IDBAny.idl b/WebCore/storage/IDBAny.idl
index 59da1c7..19d8424 100644
--- a/WebCore/storage/IDBAny.idl
+++ b/WebCore/storage/IDBAny.idl
@@ -10,9 +10,6 @@
* 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
diff --git a/WebCore/storage/IDBDatabaseRequest.cpp b/WebCore/storage/IDBDatabaseRequest.cpp
index c620279..3168d06 100644
--- a/WebCore/storage/IDBDatabaseRequest.cpp
+++ b/WebCore/storage/IDBDatabaseRequest.cpp
@@ -40,6 +40,8 @@ IDBDatabaseRequest::IDBDatabaseRequest(PassRefPtr<IDBDatabase> database)
: m_database(database)
{
m_this = IDBAny::create();
+ // We pass a reference to this object before it can be adopted.
+ relaxAdoptionRequirement();
m_this->set(this);
}
diff --git a/WebCore/storage/IDBDatabaseRequest.h b/WebCore/storage/IDBDatabaseRequest.h
index 6b9e107..23b1ecc 100644
--- a/WebCore/storage/IDBDatabaseRequest.h
+++ b/WebCore/storage/IDBDatabaseRequest.h
@@ -55,7 +55,7 @@ public:
String version() const { return m_database->version(); }
PassRefPtr<DOMStringList> objectStores() const { return m_database->objectStores(); }
- PassRefPtr<IDBRequest> createObjectStore(ScriptExecutionContext*, const String& name, const String& keyPath = "", bool autoIncrement = false);
+ PassRefPtr<IDBRequest> createObjectStore(ScriptExecutionContext*, const String& name, const String& keyPath = String(), bool autoIncrement = false);
PassRefPtr<IDBObjectStoreRequest> objectStore(const String& name, unsigned short mode = 0); // FIXME: Use constant rather than 0.
PassRefPtr<IDBRequest> removeObjectStore(ScriptExecutionContext*, const String& name);
diff --git a/WebCore/storage/IDBDatabaseRequest.idl b/WebCore/storage/IDBDatabaseRequest.idl
index c018bbf..548b221 100644
--- a/WebCore/storage/IDBDatabaseRequest.idl
+++ b/WebCore/storage/IDBDatabaseRequest.idl
@@ -36,7 +36,7 @@ module storage {
// FIXME: Add transaction.
// FIXME: Add setVersion.
- [CallWith=ScriptExecutionContext] IDBRequest createObjectStore(in DOMString name, in [Optional] DOMString path, in [Optional] boolean autoIncrement);
+ [CallWith=ScriptExecutionContext] IDBRequest createObjectStore(in DOMString name, in [Optional, ConvertNullToNullString] DOMString keyPath, in [Optional] boolean autoIncrement);
// FIXME: objectStore needs to be able to raise an IDBDatabaseException.
IDBObjectStoreRequest objectStore(in DOMString name, in [Optional] unsigned short mode);
[CallWith=ScriptExecutionContext] IDBRequest removeObjectStore(in DOMString name);
diff --git a/WebCore/storage/IDBKey.cpp b/WebCore/storage/IDBKey.cpp
index 36a83a6..8ec5dfd 100644
--- a/WebCore/storage/IDBKey.cpp
+++ b/WebCore/storage/IDBKey.cpp
@@ -26,10 +26,10 @@
#include "config.h"
#include "IDBKey.h"
-#include "SerializedScriptValue.h"
-
#if ENABLE(INDEXED_DATABASE)
+#include "SerializedScriptValue.h"
+
namespace WebCore {
IDBKey::IDBKey()
@@ -37,10 +37,6 @@ IDBKey::IDBKey()
{
}
-IDBKey::~IDBKey()
-{
-}
-
IDBKey::IDBKey(int32_t number)
: m_type(NumberType)
, m_number(number)
diff --git a/WebCore/storage/IDBKey.h b/WebCore/storage/IDBKey.h
index 0cd205b..a84ea6a 100644
--- a/WebCore/storage/IDBKey.h
+++ b/WebCore/storage/IDBKey.h
@@ -27,9 +27,7 @@
#define IDBKey_h
#include "PlatformString.h"
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
+#include <wtf/Forward.h>
#if ENABLE(INDEXED_DATABASE)
@@ -50,9 +48,9 @@ public:
{
return adoptRef(new IDBKey(string));
}
- ~IDBKey() { }
+ ~IDBKey();
- // In order of the least to the most precident in terms of sort order.
+ // In order of the least to the highest precedent in terms of sort order.
enum Type {
NullType = 0,
StringType,
diff --git a/WebCore/storage/IDBKeyRange.h b/WebCore/storage/IDBKeyRange.h
index 58c1399..4c5efe2 100644
--- a/WebCore/storage/IDBKeyRange.h
+++ b/WebCore/storage/IDBKeyRange.h
@@ -29,13 +29,12 @@
#if ENABLE(INDEXED_DATABASE)
#include "IDBAny.h"
+#include "SerializedScriptValue.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
namespace WebCore {
-class SerializedScriptValue;
-
class IDBKeyRange : public RefCounted<IDBKeyRange> {
public:
// Keep in sync with what's in the .idl file.
diff --git a/WebCore/storage/IDBKeyTree.h b/WebCore/storage/IDBKeyTree.h
index 0e39e77..70d6f83 100644
--- a/WebCore/storage/IDBKeyTree.h
+++ b/WebCore/storage/IDBKeyTree.h
@@ -26,12 +26,12 @@
#ifndef IDBKeyTree_h
#define IDBKeyTree_h
+#if ENABLE(INDEXED_DATABASE)
+
#include "IDBKey.h"
#include <wtf/AVLTree.h>
#include <wtf/Vector.h>
-#if ENABLE(INDEXED_DATABASE)
-
namespace WebCore {
template <typename ValueType>
@@ -43,9 +43,9 @@ public:
}
~IDBKeyTree();
- PassRefPtr<ValueType> get(PassRefPtr<IDBKey> key);
- void put(PassRefPtr<IDBKey> key, PassRefPtr<ValueType> value);
- void remove(PassRefPtr<IDBKey> key);
+ ValueType* get(IDBKey* key);
+ void put(IDBKey* key, ValueType* value);
+ void remove(IDBKey* key);
private:
struct TreeNode {
@@ -118,34 +118,30 @@ int IDBKeyTree<ValueType>::AVLTreeAbstractor::compare_key_key(key va, key vb)
}
template <typename ValueType>
-PassRefPtr<ValueType> IDBKeyTree<ValueType>::get(PassRefPtr<IDBKey> prpKey)
+ValueType* IDBKeyTree<ValueType>::get(IDBKey* key)
{
- RefPtr<IDBKey> key = prpKey;
- TreeNode* node = m_tree.search(key.get());
+ TreeNode* node = m_tree.search(key);
if (!node)
return 0;
- return node->value;
+ return node->value.get();
}
-
template <typename ValueType>
-void IDBKeyTree<ValueType>::put(PassRefPtr<IDBKey> prpKey, PassRefPtr<ValueType> value)
+void IDBKeyTree<ValueType>::put(IDBKey* key, ValueType* value)
{
- RefPtr<IDBKey> key = prpKey;
- TreeNode* node = m_tree.search(key.get());
+ TreeNode* node = m_tree.search(key);
if (!node) {
node = new TreeNode();
- node->key = key.release();
+ node->key = key;
m_tree.insert(node);
}
node->value = value;
}
template <typename ValueType>
-void IDBKeyTree<ValueType>::remove(PassRefPtr<IDBKey> prpKey)
+void IDBKeyTree<ValueType>::remove(IDBKey* key)
{
- RefPtr<IDBKey> key = prpKey;
- TreeNode* node = m_tree.remove(key.get());
+ TreeNode* node = m_tree.remove(key);
if (node)
delete node;
}
diff --git a/WebCore/storage/IDBObjectStore.h b/WebCore/storage/IDBObjectStore.h
index 837b65a..e78e62a 100644
--- a/WebCore/storage/IDBObjectStore.h
+++ b/WebCore/storage/IDBObjectStore.h
@@ -36,6 +36,8 @@ namespace WebCore {
class DOMStringList;
class IDBCallbacks;
class IDBIndex;
+class IDBKey;
+class SerializedScriptValue;
class IDBObjectStore : public ThreadSafeShared<IDBObjectStore> {
public:
@@ -45,6 +47,10 @@ public:
virtual String keyPath() const = 0;
virtual PassRefPtr<DOMStringList> indexNames() const = 0;
+ virtual void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
+ virtual void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>) = 0;
+ virtual void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
+
virtual void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>) = 0;
virtual PassRefPtr<IDBIndex> index(const String& name) = 0;
virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>) = 0;
diff --git a/WebCore/storage/IDBObjectStoreImpl.cpp b/WebCore/storage/IDBObjectStoreImpl.cpp
index b84ceb2..d678400 100755
--- a/WebCore/storage/IDBObjectStoreImpl.cpp
+++ b/WebCore/storage/IDBObjectStoreImpl.cpp
@@ -27,9 +27,11 @@
#include "IDBObjectStoreImpl.h"
#include "DOMStringList.h"
+#include "IDBBindingUtilities.h"
#include "IDBCallbacks.h"
#include "IDBDatabaseException.h"
#include "IDBIndexImpl.h"
+#include "IDBKeyTree.h"
#if ENABLE(INDEXED_DATABASE)
@@ -43,6 +45,7 @@ IDBObjectStoreImpl::IDBObjectStoreImpl(const String& name, const String& keyPath
: m_name(name)
, m_keyPath(keyPath)
, m_autoIncrement(autoIncrement)
+ , m_tree(Tree::create())
{
}
@@ -54,6 +57,50 @@ PassRefPtr<DOMStringList> IDBObjectStoreImpl::indexNames() const
return indexNames.release();
}
+void IDBObjectStoreImpl::get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
+{
+ RefPtr<SerializedScriptValue> value = m_tree->get(key.get());
+ if (!value) {
+ callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the object store."));
+ return;
+ }
+ callbacks->onSuccess(value.get());
+}
+
+void IDBObjectStoreImpl::put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> prpKey, bool addOnly, PassRefPtr<IDBCallbacks> callbacks)
+{
+ RefPtr<IDBKey> key = prpKey;
+
+ if (!m_keyPath.isNull()) {
+ if (key) {
+ callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "A key was supplied for an objectStore that has a keyPath."));
+ return;
+ }
+ ASSERT_NOT_REACHED();
+ callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "FIXME: keyPath not yet supported."));
+ return;
+ }
+
+ if (!key) {
+ callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::DATA_ERR, "No key supplied."));
+ return;
+ }
+
+ if (addOnly && m_tree->get(key.get())) {
+ callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "Key already exists in the object store."));
+ return;
+ }
+
+ m_tree->put(key.get(), value.get());
+ callbacks->onSuccess(key.get());
+}
+
+void IDBObjectStoreImpl::remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
+{
+ m_tree->remove(key.get());
+ callbacks->onSuccess();
+}
+
void IDBObjectStoreImpl::createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks> callbacks)
{
if (m_indexes.contains(name)) {
diff --git a/WebCore/storage/IDBObjectStoreImpl.h b/WebCore/storage/IDBObjectStoreImpl.h
index 89a06db..c4d2eb8 100644
--- a/WebCore/storage/IDBObjectStoreImpl.h
+++ b/WebCore/storage/IDBObjectStoreImpl.h
@@ -34,18 +34,24 @@
namespace WebCore {
+template <typename ValueType> class IDBKeyTree;
+
class IDBObjectStoreImpl : public IDBObjectStore {
public:
static PassRefPtr<IDBObjectStore> create(const String& name, const String& keyPath, bool autoIncrement)
{
return adoptRef(new IDBObjectStoreImpl(name, keyPath, autoIncrement));
}
- virtual ~IDBObjectStoreImpl();
+ ~IDBObjectStoreImpl();
String name() const { return m_name; }
String keyPath() const { return m_keyPath; }
PassRefPtr<DOMStringList> indexNames() const;
+ void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
+ void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>);
+ void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
+
void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>);
PassRefPtr<IDBIndex> index(const String& name);
void removeIndex(const String& name, PassRefPtr<IDBCallbacks>);
@@ -59,6 +65,9 @@ private:
typedef HashMap<String, RefPtr<IDBIndex> > IndexMap;
IndexMap m_indexes;
+
+ typedef IDBKeyTree<SerializedScriptValue> Tree;
+ RefPtr<Tree> m_tree;
};
} // namespace WebCore
diff --git a/WebCore/storage/IDBObjectStoreRequest.cpp b/WebCore/storage/IDBObjectStoreRequest.cpp
index b2c36dc..fdd498b 100644
--- a/WebCore/storage/IDBObjectStoreRequest.cpp
+++ b/WebCore/storage/IDBObjectStoreRequest.cpp
@@ -29,6 +29,7 @@
#include "DOMStringList.h"
#include "IDBAny.h"
#include "IDBIndexRequest.h"
+#include "IDBKey.h"
#include "SerializedScriptValue.h"
#include <wtf/UnusedParam.h>
@@ -36,10 +37,12 @@
namespace WebCore {
-IDBObjectStoreRequest::IDBObjectStoreRequest(PassRefPtr<IDBObjectStore> idbObjectStore)
+IDBObjectStoreRequest::IDBObjectStoreRequest(PassRefPtr<IDBObjectStore> idbObjectStore)
: m_objectStore(idbObjectStore)
{
m_this = IDBAny::create();
+ // We pass a reference to this object before it can be adopted.
+ relaxAdoptionRequirement();
m_this->set(this);
}
@@ -58,47 +61,32 @@ PassRefPtr<DOMStringList> IDBObjectStoreRequest::indexNames() const
return m_objectStore->indexNames();
}
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::get(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> key)
+PassRefPtr<IDBRequest> IDBObjectStoreRequest::get(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
{
- // FIXME: implement
- UNUSED_PARAM(context);
- UNUSED_PARAM(key);
- return 0;
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::add(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key)
-{
- // FIXME: implement
- UNUSED_PARAM(context);
- UNUSED_PARAM(value);
- UNUSED_PARAM(key);
- return 0;
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_objectStore->get(key, request);
+ return request;
}
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::modify(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key)
+PassRefPtr<IDBRequest> IDBObjectStoreRequest::add(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
{
- // FIXME: implement
- UNUSED_PARAM(context);
- UNUSED_PARAM(value);
- UNUSED_PARAM(key);
- return 0;
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_objectStore->put(value, key, true, request);
+ return request;
}
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::addOrModify(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key)
+PassRefPtr<IDBRequest> IDBObjectStoreRequest::put(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
{
- // FIXME: implement
- UNUSED_PARAM(context);
- UNUSED_PARAM(value);
- UNUSED_PARAM(key);
- return 0;
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_objectStore->put(value, key, false, request);
+ return request;
}
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::remove(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> key)
+PassRefPtr<IDBRequest> IDBObjectStoreRequest::remove(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
{
- // FIXME: implement
- UNUSED_PARAM(context);
- UNUSED_PARAM(key);
- return 0;
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_objectStore->remove(key, request);
+ return request;
}
PassRefPtr<IDBRequest> IDBObjectStoreRequest::createIndex(ScriptExecutionContext* context, const String& name, const String& keyPath, bool unique)
diff --git a/WebCore/storage/IDBObjectStoreRequest.h b/WebCore/storage/IDBObjectStoreRequest.h
index f1a9f5b..af752f5 100644
--- a/WebCore/storage/IDBObjectStoreRequest.h
+++ b/WebCore/storage/IDBObjectStoreRequest.h
@@ -40,6 +40,7 @@ namespace WebCore {
class DOMStringList;
class IDBAny;
class IDBIndexRequest;
+class IDBKey;
class SerializedScriptValue;
class IDBObjectStoreRequest : public RefCounted<IDBObjectStoreRequest> {
@@ -54,11 +55,10 @@ public:
String keyPath() const;
PassRefPtr<DOMStringList> indexNames() const;
- PassRefPtr<IDBRequest> get(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> key);
- PassRefPtr<IDBRequest> add(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key = 0);
- PassRefPtr<IDBRequest> modify(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key = 0);
- PassRefPtr<IDBRequest> addOrModify(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<SerializedScriptValue> key = 0);
- PassRefPtr<IDBRequest> remove(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> key);
+ PassRefPtr<IDBRequest> get(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
+ PassRefPtr<IDBRequest> add(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
+ PassRefPtr<IDBRequest> put(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
+ PassRefPtr<IDBRequest> remove(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
PassRefPtr<IDBRequest> createIndex(ScriptExecutionContext*, const String& name, const String& keyPath, bool unique = false);
PassRefPtr<IDBIndexRequest> index(const String& name);
diff --git a/WebCore/storage/IDBObjectStoreRequest.idl b/WebCore/storage/IDBObjectStoreRequest.idl
index 873629d..a816b73 100644
--- a/WebCore/storage/IDBObjectStoreRequest.idl
+++ b/WebCore/storage/IDBObjectStoreRequest.idl
@@ -28,23 +28,21 @@ module storage {
interface [
Conditional=INDEXED_DATABASE
] IDBObjectStoreRequest {
- [CallWith=ScriptExecutionContext] IDBRequest get(in SerializedScriptValue key);
-
+ [CallWith=ScriptExecutionContext] IDBRequest get(in IDBKey key);
// FIXME: Come to concensus re getAll.
// FIXME: SerializedScriptValue raises an exception if you pass in something that can't be serialized.
// We need to instead "raise" this error via an error callback.
- [CallWith=ScriptExecutionContext] IDBRequest add(in SerializedScriptValue value, in [Optional] SerializedScriptValue key);
- [CallWith=ScriptExecutionContext] IDBRequest modify(in SerializedScriptValue value, in [Optional] SerializedScriptValue key);
- [CallWith=ScriptExecutionContext] IDBRequest addOrModify(in SerializedScriptValue value, in [Optional] SerializedScriptValue key);
- [CallWith=ScriptExecutionContext] IDBRequest remove(in SerializedScriptValue key);
+ [CallWith=ScriptExecutionContext] IDBRequest add(in SerializedScriptValue value, in [Optional] IDBKey key);
+ [CallWith=ScriptExecutionContext] IDBRequest put(in SerializedScriptValue value, in [Optional] IDBKey key);
+ [CallWith=ScriptExecutionContext] IDBRequest remove(in IDBKey key);
// FIXME: write openCursor
- [CallWith=ScriptExecutionContext] IDBRequest createIndex(in DOMString name, in DOMString keyPath, in [Optional] boolean unique);
+ [CallWith=ScriptExecutionContext] IDBRequest createIndex(in DOMString name, in [ConvertNullToNullString] DOMString keyPath, in [Optional] boolean unique);
// FIXME: This needs to raise an IDBDatabaseException on errors.
IDBIndexRequest index(in DOMString name);
[CallWith=ScriptExecutionContext] IDBRequest removeIndex(in DOMString name);
readonly attribute DOMString name;
- readonly attribute DOMString keyPath;
+ readonly attribute [ConvertNullStringTo=Null] DOMString keyPath;
readonly attribute DOMStringList indexNames;
};
}
diff --git a/WebCore/storage/IDBRequest.cpp b/WebCore/storage/IDBRequest.cpp
index 7ec8ee6..78dd15a 100644
--- a/WebCore/storage/IDBRequest.cpp
+++ b/WebCore/storage/IDBRequest.cpp
@@ -87,7 +87,8 @@ void IDBRequest::onSuccess(PassRefPtr<IDBIndex> idbIndex)
void IDBRequest::onSuccess(PassRefPtr<IDBKey> idbKey)
{
- ASSERT_NOT_REACHED();
+ onEventCommon();
+ m_result->set(idbKey);
}
void IDBRequest::onSuccess(PassRefPtr<IDBObjectStore> idbObjectStore)
diff --git a/WebCore/storage/IndexedDatabaseRequest.cpp b/WebCore/storage/IndexedDatabaseRequest.cpp
index 93e052c..a25fb2b 100644
--- a/WebCore/storage/IndexedDatabaseRequest.cpp
+++ b/WebCore/storage/IndexedDatabaseRequest.cpp
@@ -45,6 +45,8 @@ IndexedDatabaseRequest::IndexedDatabaseRequest(IndexedDatabase* indexedDatabase)
: m_indexedDatabase(indexedDatabase)
{
m_this = IDBAny::create();
+ // We pass a reference to this object before it can be adopted.
+ relaxAdoptionRequirement();
m_this->set(this);
}
@@ -94,4 +96,3 @@ PassRefPtr<IDBKeyRange> IndexedDatabaseRequest::makeBoundKeyRange(PassRefPtr<Ser
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)
-
diff --git a/WebCore/storage/StorageAreaSync.cpp b/WebCore/storage/StorageAreaSync.cpp
index e20f11c..f2008ab 100644
--- a/WebCore/storage/StorageAreaSync.cpp
+++ b/WebCore/storage/StorageAreaSync.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -49,12 +49,7 @@ static const double StorageSyncInterval = 1.0;
// much harder to starve the rest of LocalStorage and the OS's IO subsystem in general.
static const int MaxiumItemsToSync = 100;
-PassRefPtr<StorageAreaSync> StorageAreaSync::create(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, String databaseIdentifier)
-{
- return adoptRef(new StorageAreaSync(storageSyncManager, storageArea, databaseIdentifier));
-}
-
-StorageAreaSync::StorageAreaSync(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, String databaseIdentifier)
+inline StorageAreaSync::StorageAreaSync(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, const String& databaseIdentifier)
: m_syncTimer(this, &StorageAreaSync::syncTimerFired)
, m_itemsCleared(false)
, m_finalSyncScheduled(false)
@@ -70,11 +65,18 @@ StorageAreaSync::StorageAreaSync(PassRefPtr<StorageSyncManager> storageSyncManag
ASSERT(isMainThread());
ASSERT(m_storageArea);
ASSERT(m_syncManager);
+}
+
+PassRefPtr<StorageAreaSync> StorageAreaSync::create(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, const String& databaseIdentifier)
+{
+ RefPtr<StorageAreaSync> area = adoptRef(new StorageAreaSync(storageSyncManager, storageArea, databaseIdentifier));
// FIXME: If it can't import, then the default WebKit behavior should be that of private browsing,
- // not silently ignoring it. https://bugs.webkit.org/show_bug.cgi?id=25894
- if (!m_syncManager->scheduleImport(this))
- m_importComplete = true;
+ // not silently ignoring it. https://bugs.webkit.org/show_bug.cgi?id=25894
+ if (!area->m_syncManager->scheduleImport(area.get()))
+ area->m_importComplete = true;
+
+ return area.release();
}
StorageAreaSync::~StorageAreaSync()
diff --git a/WebCore/storage/StorageAreaSync.h b/WebCore/storage/StorageAreaSync.h
index a26b041..94c4670 100644
--- a/WebCore/storage/StorageAreaSync.h
+++ b/WebCore/storage/StorageAreaSync.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,7 +28,6 @@
#if ENABLE(DOM_STORAGE)
-#include "PlatformString.h"
#include "SQLiteDatabase.h"
#include "StringHash.h"
#include "Timer.h"
@@ -42,7 +41,7 @@ namespace WebCore {
class StorageAreaSync : public RefCounted<StorageAreaSync> {
public:
- static PassRefPtr<StorageAreaSync> create(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, String databaseIdentifier);
+ static PassRefPtr<StorageAreaSync> create(PassRefPtr<StorageSyncManager>, PassRefPtr<StorageAreaImpl>, const String& databaseIdentifier);
~StorageAreaSync();
void scheduleFinalSync();
@@ -52,7 +51,7 @@ namespace WebCore {
void scheduleClear();
private:
- StorageAreaSync(PassRefPtr<StorageSyncManager> storageSyncManager, PassRefPtr<StorageAreaImpl> storageArea, String databaseIdentifier);
+ StorageAreaSync(PassRefPtr<StorageSyncManager>, PassRefPtr<StorageAreaImpl>, const String& databaseIdentifier);
void dispatchStorageEvent(const String& key, const String& oldValue, const String& newValue, Frame* sourceFrame);
diff --git a/WebCore/svg/SVGAnimatedString.idl b/WebCore/svg/SVGAnimatedString.idl
index 888c762..1531942 100644
--- a/WebCore/svg/SVGAnimatedString.idl
+++ b/WebCore/svg/SVGAnimatedString.idl
@@ -26,9 +26,9 @@
module svg {
interface [Conditional=SVG] SVGAnimatedString {
- attribute core::DOMString baseVal
+ attribute DOMString baseVal
/*setter raises(DOMException)*/;
- readonly attribute core::DOMString animVal;
+ readonly attribute DOMString animVal;
};
}
diff --git a/WebCore/svg/SVGColor.idl b/WebCore/svg/SVGColor.idl
index 32a2683..f4e17ab 100644
--- a/WebCore/svg/SVGColor.idl
+++ b/WebCore/svg/SVGColor.idl
@@ -21,7 +21,7 @@
module svg {
- interface [Conditional=SVG] SVGColor : css::CSSValue {
+ interface [Conditional=SVG] SVGColor : CSSValue {
// Color Types
const unsigned short SVG_COLORTYPE_UNKNOWN = 0;
const unsigned short SVG_COLORTYPE_RGBCOLOR = 1;
@@ -29,17 +29,17 @@ module svg {
const unsigned short SVG_COLORTYPE_CURRENTCOLOR = 3;
readonly attribute unsigned short colorType;
- readonly attribute css::RGBColor rgbColor;
+ readonly attribute RGBColor rgbColor;
/*readonly attribute SVGICCColor iccColor;*/
- void setRGBColor(in core::DOMString rgbColor)
+ void setRGBColor(in DOMString rgbColor)
raises(SVGException);
- void setRGBColorICCColor(in core::DOMString rgbColor,
- in core::DOMString iccColor)
+ void setRGBColorICCColor(in DOMString rgbColor,
+ in DOMString iccColor)
raises(SVGException);
void setColor(in unsigned short colorType,
- in core::DOMString rgbColor,
- in core::DOMString iccColor)
+ in DOMString rgbColor,
+ in DOMString iccColor)
raises(SVGException);
};
diff --git a/WebCore/svg/SVGDocument.idl b/WebCore/svg/SVGDocument.idl
index 26b70d1..812665e 100644
--- a/WebCore/svg/SVGDocument.idl
+++ b/WebCore/svg/SVGDocument.idl
@@ -21,12 +21,12 @@
module svg {
- interface [Conditional=SVG] SVGDocument : core::Document {
+ interface [Conditional=SVG] SVGDocument : Document {
readonly attribute SVGSVGElement rootElement;
// Overwrite the one in events::DocumentEvent
- events::Event createEvent(in core::DOMString eventType)
- raises(core::DOMException);
+ Event createEvent(in DOMString eventType)
+ raises(DOMException);
};
}
diff --git a/WebCore/svg/SVGDocumentExtensions.cpp b/WebCore/svg/SVGDocumentExtensions.cpp
index fc31551..bc4d6e8 100644
--- a/WebCore/svg/SVGDocumentExtensions.cpp
+++ b/WebCore/svg/SVGDocumentExtensions.cpp
@@ -116,6 +116,12 @@ void SVGDocumentExtensions::unpauseAnimations()
bool SVGDocumentExtensions::sampleAnimationAtTime(const String& elementId, SVGSMILElement* element, double time)
{
+#if !ENABLE(SVG_ANIMATION)
+ UNUSED_PARAM(elementId);
+ UNUSED_PARAM(element);
+ UNUSED_PARAM(time);
+ return false;
+#else
ASSERT(element);
SMILTimeContainer* container = element->timeContainer();
if (!container || container->isPaused())
@@ -123,6 +129,7 @@ bool SVGDocumentExtensions::sampleAnimationAtTime(const String& elementId, SVGSM
container->sampleAnimationAtTime(elementId, time);
return true;
+#endif
}
// FIXME: Callers should probably use ScriptController::eventHandlerLineNumber()
diff --git a/WebCore/svg/SVGFontFaceElement.cpp b/WebCore/svg/SVGFontFaceElement.cpp
index 94f3bd5..cf77d5b 100644
--- a/WebCore/svg/SVGFontFaceElement.cpp
+++ b/WebCore/svg/SVGFontFaceElement.cpp
@@ -58,7 +58,6 @@ SVGFontFaceElement::SVGFontFaceElement(const QualifiedName& tagName, Document* d
SVGFontFaceElement::~SVGFontFaceElement()
{
- removeFromMappedElementSheet();
}
static int cssPropertyIdForSVGAttributeName(const QualifiedName& attrName)
diff --git a/WebCore/svg/SVGLangSpace.idl b/WebCore/svg/SVGLangSpace.idl
index 277e514..b982dc5 100644
--- a/WebCore/svg/SVGLangSpace.idl
+++ b/WebCore/svg/SVGLangSpace.idl
@@ -27,9 +27,9 @@
module svg {
interface [Conditional=SVG, ObjCProtocol, OmitConstructor] SVGLangSpace {
- attribute core::DOMString xmllang
+ attribute DOMString xmllang
/*setter raises(DOMException)*/;
- attribute core::DOMString xmlspace
+ attribute DOMString xmlspace
/*setter raises(DOMException)*/;
};
diff --git a/WebCore/svg/SVGPathSegList.cpp b/WebCore/svg/SVGPathSegList.cpp
index d9d6310..e1215e5 100644
--- a/WebCore/svg/SVGPathSegList.cpp
+++ b/WebCore/svg/SVGPathSegList.cpp
@@ -28,6 +28,7 @@
#include "FloatConversion.h"
#include "FloatPoint.h"
+#include "FloatSize.h"
#include "Path.h"
#include "PathTraversalState.h"
#include "SVGPathSegArc.h"
@@ -111,6 +112,7 @@ Path SVGPathSegList::toPathData()
Path pathData;
int len = numberOfItems();
ExceptionCode ec = 0;
+ FloatPoint previousEndPoint(0, 0);
for (int i = 0; i < len; ++i) {
SVGPathSeg* segment = getItem(i, ec).get();
if (ec)
@@ -119,21 +121,37 @@ Path SVGPathSegList::toPathData()
case SVGPathSeg::PATHSEG_MOVETO_ABS:
{
SVGPathSegMovetoAbs* moveTo = static_cast<SVGPathSegMovetoAbs*>(segment);
- pathData.moveTo(FloatPoint(moveTo->x(), moveTo->y()));
+ FloatPoint endPoint(moveTo->x(), moveTo->y());
+ pathData.moveTo(endPoint);
+ previousEndPoint = endPoint;
break;
}
case SVGPathSeg::PATHSEG_LINETO_ABS:
{
SVGPathSegLinetoAbs* lineTo = static_cast<SVGPathSegLinetoAbs*>(segment);
- pathData.addLineTo(FloatPoint(lineTo->x(), lineTo->y()));
+ FloatPoint endPoint(lineTo->x(), lineTo->y());
+ pathData.addLineTo(endPoint);
+ previousEndPoint = endPoint;
break;
}
case SVGPathSeg::PATHSEG_CURVETO_CUBIC_ABS:
{
SVGPathSegCurvetoCubicAbs* curveTo = static_cast<SVGPathSegCurvetoCubicAbs*>(segment);
+ FloatPoint endPoint(curveTo->x(), curveTo->y());
pathData.addBezierCurveTo(FloatPoint(curveTo->x1(), curveTo->y1()),
FloatPoint(curveTo->x2(), curveTo->y2()),
- FloatPoint(curveTo->x(), curveTo->y()));
+ endPoint);
+ previousEndPoint = endPoint;
+ break;
+ }
+ case SVGPathSeg::PATHSEG_CURVETO_CUBIC_REL:
+ {
+ SVGPathSegCurvetoCubicRel* curveTo = static_cast<SVGPathSegCurvetoCubicRel*>(segment);
+ FloatSize endPoint(curveTo->x(), curveTo->y());
+ pathData.addBezierCurveTo(previousEndPoint + FloatSize(curveTo->x1(), curveTo->y1()),
+ previousEndPoint + FloatSize(curveTo->x2(), curveTo->y2()),
+ previousEndPoint + endPoint);
+ previousEndPoint += endPoint;
break;
}
case SVGPathSeg::PATHSEG_CLOSEPATH:
diff --git a/WebCore/svg/SVGSVGElement.cpp b/WebCore/svg/SVGSVGElement.cpp
index a719323..6d88c37 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -1,6 +1,6 @@
/*
Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org>
- 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org>
+ 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org>
2007 Apple Inc. All rights reserved.
This library is free software; you can redistribute it and/or
@@ -592,6 +592,27 @@ void SVGSVGElement::documentDidBecomeActive()
unpauseAnimations();
}
+// getElementById on SVGSVGElement is restricted to only the child subtree defined by the <svg> element.
+// See http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement
+Element* SVGSVGElement::getElementById(const AtomicString& id) const
+{
+ Element* element = document()->getElementById(id);
+ if (element && element->isDescendantOf(this))
+ return element;
+
+ // Fall back to traversing our subtree. Duplicate ids are allowed, the first found will
+ // be returned.
+ for (Node* node = traverseNextNode(this); node; node = node->traverseNextNode(this)) {
+ if (!node->isElementNode())
+ continue;
+
+ Element* element = static_cast<Element*>(node);
+ if (element->hasID() && element->getIdAttribute() == id)
+ return element;
+ }
+ return 0;
+}
+
}
#endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGSVGElement.h b/WebCore/svg/SVGSVGElement.h
index 88ce958..099f9a1 100644
--- a/WebCore/svg/SVGSVGElement.h
+++ b/WebCore/svg/SVGSVGElement.h
@@ -1,6 +1,6 @@
/*
Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org>
- 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
+ 2004, 2005, 2006, 2007, 2010 Rob Buis <buis@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -129,6 +129,8 @@ namespace WebCore {
bool isOutermostSVG() const;
+ Element* getElementById(const AtomicString&) const;
+
private:
virtual bool selfHasRelativeLengths() const;
diff --git a/WebCore/svg/SVGSVGElement.idl b/WebCore/svg/SVGSVGElement.idl
index 46a17b0..0d9c344 100644
--- a/WebCore/svg/SVGSVGElement.idl
+++ b/WebCore/svg/SVGSVGElement.idl
@@ -1,6 +1,6 @@
/*
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
- Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
+ Copyright (C) 2004, 2005, 2010 Rob Buis <buis@kde.org>
Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
@@ -37,9 +37,9 @@ module svg {
readonly attribute SVGAnimatedLength y;
readonly attribute SVGAnimatedLength width;
readonly attribute SVGAnimatedLength height;
- attribute core::DOMString contentScriptType
+ attribute DOMString contentScriptType
/*setter raises(DOMException)*/;
- attribute core::DOMString contentStyleType
+ attribute DOMString contentStyleType
/*setter raises(DOMException)*/;
readonly attribute [Immutable] SVGRect viewport;
readonly attribute float pixelUnitToMillimeterX;
@@ -62,9 +62,9 @@ module svg {
boolean animationsPaused();
float getCurrentTime();
void setCurrentTime(in float seconds);
- core::NodeList getIntersectionList(in SVGRect rect,
+ NodeList getIntersectionList(in SVGRect rect,
in SVGElement referenceElement);
- core::NodeList getEnclosureList(in SVGRect rect,
+ NodeList getEnclosureList(in SVGRect rect,
in SVGElement referenceElement);
boolean checkIntersection(in SVGElement element,
in SVGRect rect);
@@ -80,6 +80,7 @@ module svg {
SVGRect createSVGRect();
SVGTransform createSVGTransform();
SVGTransform createSVGTransformFromMatrix(in SVGMatrix matrix);
+ Element getElementById(in DOMString elementId);
};
}
diff --git a/WebCore/svg/SVGStringList.idl b/WebCore/svg/SVGStringList.idl
index 7bdd5ed..2af03ad 100644
--- a/WebCore/svg/SVGStringList.idl
+++ b/WebCore/svg/SVGStringList.idl
@@ -29,19 +29,19 @@ module svg {
readonly attribute unsigned long numberOfItems;
void clear()
- raises(core::DOMException);
- core::DOMString initialize(in core::DOMString item)
- raises(core::DOMException, SVGException);
- core::DOMString getItem(in unsigned long index)
- raises(core::DOMException);
- core::DOMString insertItemBefore(in core::DOMString item, in unsigned long index)
- raises(core::DOMException, SVGException);
- core::DOMString replaceItem(in core::DOMString item, in unsigned long index)
- raises(core::DOMException, SVGException);
- core::DOMString removeItem(in unsigned long index)
- raises(core::DOMException);
- core::DOMString appendItem(in core::DOMString item)
- raises(core::DOMException, SVGException);
+ raises(DOMException);
+ DOMString initialize(in DOMString item)
+ raises(DOMException, SVGException);
+ DOMString getItem(in unsigned long index)
+ raises(DOMException);
+ DOMString insertItemBefore(in DOMString item, in unsigned long index)
+ raises(DOMException, SVGException);
+ DOMString replaceItem(in DOMString item, in unsigned long index)
+ raises(DOMException, SVGException);
+ DOMString removeItem(in unsigned long index)
+ raises(DOMException);
+ DOMString appendItem(in DOMString item)
+ raises(DOMException, SVGException);
};
}
diff --git a/WebCore/svg/SVGStylable.idl b/WebCore/svg/SVGStylable.idl
index 2da2b77..c997476 100644
--- a/WebCore/svg/SVGStylable.idl
+++ b/WebCore/svg/SVGStylable.idl
@@ -29,9 +29,9 @@ module svg {
interface [Conditional=SVG, ObjCProtocol, OmitConstructor] SVGStylable {
readonly attribute SVGAnimatedString className;
- readonly attribute css::CSSStyleDeclaration style;
+ readonly attribute CSSStyleDeclaration style;
- css::CSSValue getPresentationAttribute(in core::DOMString name);
+ CSSValue getPresentationAttribute(in DOMString name);
};
}
diff --git a/WebCore/svg/SVGStyleElement.cpp b/WebCore/svg/SVGStyleElement.cpp
index d997074..48fbe69 100644
--- a/WebCore/svg/SVGStyleElement.cpp
+++ b/WebCore/svg/SVGStyleElement.cpp
@@ -114,7 +114,7 @@ void SVGStyleElement::removedFromDocument()
void SVGStyleElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
{
SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
- StyleElement::process(this);
+ StyleElement::process(this, 0);
}
StyleSheet* SVGStyleElement::sheet()
diff --git a/WebCore/svg/SVGStyleElement.idl b/WebCore/svg/SVGStyleElement.idl
index e47ed1d..a93cfa6 100644
--- a/WebCore/svg/SVGStyleElement.idl
+++ b/WebCore/svg/SVGStyleElement.idl
@@ -28,11 +28,11 @@ module svg {
interface [Conditional=SVG] SVGStyleElement : SVGElement,
SVGLangSpace {
- attribute core::DOMString type
+ attribute DOMString type
setter raises(DOMException);
- attribute core::DOMString media
+ attribute DOMString media
setter raises(DOMException);
- attribute core::DOMString title
+ attribute DOMString title
setter raises(DOMException);
};
diff --git a/WebCore/svg/SVGStyledElement.cpp b/WebCore/svg/SVGStyledElement.cpp
index 1d7e4ec..6b55683 100644
--- a/WebCore/svg/SVGStyledElement.cpp
+++ b/WebCore/svg/SVGStyledElement.cpp
@@ -325,11 +325,11 @@ PassRefPtr<RenderStyle> SVGStyledElement::resolveStyle(RenderStyle* parentStyle)
PassRefPtr<CSSValue> SVGStyledElement::getPresentationAttribute(const String& name)
{
- if (!mappedAttributes())
+ if (!attributeMap())
return 0;
QualifiedName attributeName(nullAtom, name, nullAtom);
- Attribute* attr = mappedAttributes()->getAttributeItem(attributeName);
+ Attribute* attr = attributeMap()->getAttributeItem(attributeName);
if (!attr || !attr->isMappedAttribute() || !attr->style())
return 0;
@@ -366,10 +366,43 @@ AffineTransform SVGStyledElement::localCoordinateSpaceTransform(SVGLocatable::CT
return AffineTransform();
}
-void SVGStyledElement::updateRelativeLengthsInformation(bool, SVGStyledElement*)
+void SVGStyledElement::updateRelativeLengthsInformation(bool hasRelativeLengths, SVGStyledElement* element)
{
- // FIXME: The actual code will land in a follow-up patch.
- // See https://bugs.webkit.org/show_bug.cgi?id=41566
+ // If we're not yet in a document, this function will be called again from insertedIntoDocument(). Do nothing now.
+ if (!inDocument())
+ return;
+
+ // An element wants to notify us that its own relative lengths state changed.
+ // Register it in the relative length map, and register us in the parent relative length map.
+ // Register the parent in the grandparents map, etc. Repeat procedure until the root of the SVG tree.
+
+ if (hasRelativeLengths)
+ m_elementsWithRelativeLengths.add(element);
+ else {
+ if (!m_elementsWithRelativeLengths.contains(element)) {
+ // We were never registered. Do nothing.
+ return;
+ }
+
+ m_elementsWithRelativeLengths.remove(element);
+ }
+
+ // Find first styled parent node, and notify it that we've changed our relative length state.
+ Node* node = parent();
+ while (node) {
+ if (!node->isSVGElement())
+ break;
+
+ SVGElement* element = static_cast<SVGElement*>(node);
+ if (!element->isStyled()) {
+ node = node->parent();
+ continue;
+ }
+
+ // Register us in the parent element map.
+ static_cast<SVGStyledElement*>(element)->updateRelativeLengthsInformation(hasRelativeLengths, this);
+ break;
+ }
}
}
diff --git a/WebCore/svg/SVGStyledElement.h b/WebCore/svg/SVGStyledElement.h
index d0b52db..dcfc96a 100644
--- a/WebCore/svg/SVGStyledElement.h
+++ b/WebCore/svg/SVGStyledElement.h
@@ -40,8 +40,7 @@ namespace WebCore {
virtual String title() const;
- // FIXME: The actual code will land in a follow-up patch.
- bool hasRelativeLengths() const { return selfHasRelativeLengths(); }
+ bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEmpty(); }
virtual bool isStyled() const { return true; }
virtual bool supportsMarkers() const { return false; }
@@ -81,6 +80,7 @@ namespace WebCore {
virtual bool selfHasRelativeLengths() const { return false; }
private:
+ HashSet<SVGStyledElement*> m_elementsWithRelativeLengths;
DECLARE_ANIMATED_PROPERTY(SVGStyledElement, HTMLNames::classAttr, String, ClassName, className)
};
diff --git a/WebCore/svg/SVGTests.idl b/WebCore/svg/SVGTests.idl
index 8a5f7c2..905ba5e 100644
--- a/WebCore/svg/SVGTests.idl
+++ b/WebCore/svg/SVGTests.idl
@@ -31,7 +31,7 @@ module svg {
readonly attribute SVGStringList requiredExtensions;
readonly attribute SVGStringList systemLanguage;
- boolean hasExtension(in core::DOMString extension);
+ boolean hasExtension(in DOMString extension);
};
}
diff --git a/WebCore/svg/SVGUseElement.cpp b/WebCore/svg/SVGUseElement.cpp
index b90bd53..5ca560a 100644
--- a/WebCore/svg/SVGUseElement.cpp
+++ b/WebCore/svg/SVGUseElement.cpp
@@ -63,6 +63,7 @@ SVGUseElement::SVGUseElement(const QualifiedName& tagName, Document* doc)
, m_y(LengthModeHeight)
, m_width(LengthModeWidth)
, m_height(LengthModeHeight)
+ , m_updatesBlocked(false)
, m_isPendingResource(false)
, m_needsShadowTreeRecreation(false)
{
@@ -314,13 +315,17 @@ void SVGUseElement::updateContainerOffsets()
void SVGUseElement::recalcStyle(StyleChange change)
{
// Eventually mark shadow root element needing style recalc
- if (needsStyleRecalc() && m_targetElementInstance) {
+ if (needsStyleRecalc() && m_targetElementInstance && !m_updatesBlocked) {
if (SVGElement* shadowRoot = m_targetElementInstance->shadowTreeElement())
shadowRoot->setNeedsStyleRecalc();
}
SVGStyledTransformableElement::recalcStyle(change);
+ // Assure that the shadow tree has not been marked for recreation, while we're building it.
+ if (m_updatesBlocked)
+ ASSERT(!m_needsShadowTreeRecreation);
+
bool needsStyleUpdate = !m_needsShadowTreeRecreation;
if (m_needsShadowTreeRecreation) {
static_cast<RenderSVGShadowTreeRootContainer*>(renderer())->markShadowTreeForRecreation();
@@ -441,6 +446,26 @@ void SVGUseElement::buildPendingResource()
void SVGUseElement::buildShadowAndInstanceTree(SVGShadowTreeRootElement* shadowRoot)
{
+ struct ShadowTreeUpdateBlocker {
+ ShadowTreeUpdateBlocker(SVGUseElement* currentUseElement)
+ : useElement(currentUseElement)
+ {
+ useElement->setUpdatesBlocked(true);
+ }
+
+ ~ShadowTreeUpdateBlocker()
+ {
+ useElement->setUpdatesBlocked(false);
+ }
+
+ SVGUseElement* useElement;
+ };
+
+ // When cloning the target nodes, they may decide to synchronize style and/or animated SVG attributes.
+ // That causes calls to SVGElementInstance::updateAllInstancesOfElement(), which mark the shadow tree for recreation.
+ // Solution: block any updates to the shadow tree while we're building it.
+ ShadowTreeUpdateBlocker blocker(this);
+
String id = SVGURIReference::getTarget(href());
Element* targetElement = document()->getElementById(id);
if (!targetElement) {
@@ -584,8 +609,8 @@ void SVGUseElement::attach()
void SVGUseElement::detach()
{
- SVGStyledTransformableElement::detach();
m_targetElementInstance = 0;
+ SVGStyledTransformableElement::detach();
}
static bool isDirectReference(Node* n)
@@ -959,6 +984,10 @@ SVGElementInstance* SVGUseElement::instanceForShadowTreeElement(Node* element, S
void SVGUseElement::invalidateShadowTree()
{
+ // Don't mutate the shadow tree while we're building it.
+ if (m_updatesBlocked)
+ return;
+
m_needsShadowTreeRecreation = true;
setNeedsStyleRecalc();
}
diff --git a/WebCore/svg/SVGUseElement.h b/WebCore/svg/SVGUseElement.h
index bfda95e..cbbcd0f 100644
--- a/WebCore/svg/SVGUseElement.h
+++ b/WebCore/svg/SVGUseElement.h
@@ -68,6 +68,8 @@ namespace WebCore {
SVGElementInstance* instanceForShadowTreeElement(Node* element) const;
void invalidateShadowTree();
+ void setUpdatesBlocked(bool blocked) { m_updatesBlocked = blocked; }
+
private:
friend class RenderSVGShadowTreeRootContainer;
bool isPendingResource() const { return m_isPendingResource; }
@@ -110,6 +112,7 @@ namespace WebCore {
void updateContainerOffsets();
void updateContainerSizes();
+ bool m_updatesBlocked;
bool m_isPendingResource;
bool m_needsShadowTreeRecreation;
String m_resourceId;
diff --git a/WebCore/svg/SVGZoomEvent.idl b/WebCore/svg/SVGZoomEvent.idl
index 8327bef..ea05012 100644
--- a/WebCore/svg/SVGZoomEvent.idl
+++ b/WebCore/svg/SVGZoomEvent.idl
@@ -25,7 +25,7 @@
module svg {
- interface [Conditional=SVG] SVGZoomEvent : events::UIEvent {
+ interface [Conditional=SVG] SVGZoomEvent : UIEvent {
readonly attribute [Immutable] SVGRect zoomRectScreen;
readonly attribute float previousScale;
readonly attribute [Immutable] SVGPoint previousTranslate;
diff --git a/WebCore/svg/graphics/SVGImage.cpp b/WebCore/svg/graphics/SVGImage.cpp
index 8260d99..ebd7703 100644
--- a/WebCore/svg/graphics/SVGImage.cpp
+++ b/WebCore/svg/graphics/SVGImage.cpp
@@ -255,7 +255,7 @@ bool SVGImage::dataChanged(bool allDataReceived)
// FIXME: If this SVG ends up loading itself, we might leak the world.
// The comment said that the Cache code does not know about CachedImages
// holding Frames and won't know to break the cycle. But
- m_page.set(new Page(m_chromeClient.get(), dummyContextMenuClient, dummyEditorClient, dummyDragClient, dummyInspectorClient, 0, 0, 0));
+ m_page.set(new Page(m_chromeClient.get(), dummyContextMenuClient, dummyEditorClient, dummyDragClient, dummyInspectorClient, 0, 0, 0, 0));
m_page->settings()->setMediaEnabled(false);
m_page->settings()->setJavaScriptEnabled(false);
m_page->settings()->setPluginsEnabled(false);
diff --git a/WebCore/websockets/WebSocket.cpp b/WebCore/websockets/WebSocket.cpp
index 561b821..91761fb 100644
--- a/WebCore/websockets/WebSocket.cpp
+++ b/WebCore/websockets/WebSocket.cpp
@@ -179,7 +179,10 @@ void WebSocket::close()
return;
m_state = CLOSED;
m_bufferedAmountAfterClose = m_channel->bufferedAmount();
- m_channel->close();
+ // didClose notification may be already queued, which we will inadvertently process while waiting for bufferedAmount() to return.
+ // In this case m_channel will be set to null during didClose() call, thus we need to test validness of m_channel here.
+ if (m_channel)
+ m_channel->close();
}
const KURL& WebSocket::url() const
diff --git a/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp b/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
index f8d1230..fd82591 100644
--- a/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
+++ b/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
@@ -300,6 +300,7 @@ bool WorkerThreadableWebSocketChannel::Bridge::send(const String& message)
ASSERT(m_peer);
setMethodNotCompleted();
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSend, m_peer, message));
+ RefPtr<Bridge> protect(this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
return clientWrapper && clientWrapper->sent();
@@ -321,6 +322,7 @@ unsigned long WorkerThreadableWebSocketChannel::Bridge::bufferedAmount()
ASSERT(m_peer);
setMethodNotCompleted();
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadBufferedAmount, m_peer));
+ RefPtr<Bridge> protect(this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (clientWrapper)
@@ -404,6 +406,8 @@ void WorkerThreadableWebSocketChannel::Bridge::setMethodNotCompleted()
m_workerClientWrapper->clearSyncMethodDone();
}
+// Caller of this function should hold a reference to the bridge, because this function may call WebSocket::didClose() in the end,
+// which causes the bridge to get disconnected from the WebSocket and deleted if there is no other reference.
void WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion()
{
if (!m_workerContext)
@@ -411,8 +415,8 @@ void WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion()
WorkerRunLoop& runLoop = m_workerContext->thread()->runLoop();
MessageQueueWaitResult result = MessageQueueMessageReceived;
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
- while (clientWrapper && !clientWrapper->syncMethodDone() && result != MessageQueueTerminated) {
- result = runLoop.runInMode(m_workerContext.get(), m_taskMode);
+ while (m_workerContext && clientWrapper && !clientWrapper->syncMethodDone() && result != MessageQueueTerminated) {
+ result = runLoop.runInMode(m_workerContext.get(), m_taskMode); // May cause this bridge to get disconnected, which makes m_workerContext become null.
clientWrapper = m_workerClientWrapper.get();
}
}
diff --git a/WebCore/workers/DefaultSharedWorkerRepository.cpp b/WebCore/workers/DefaultSharedWorkerRepository.cpp
index 8186f30..4a8e947 100644
--- a/WebCore/workers/DefaultSharedWorkerRepository.cpp
+++ b/WebCore/workers/DefaultSharedWorkerRepository.cpp
@@ -387,7 +387,7 @@ void DefaultSharedWorkerRepository::connectToWorker(PassRefPtr<SharedWorker> wor
if (proxy->thread())
proxy->thread()->runLoop().postTask(SharedWorkerConnectTask::create(port));
else {
- RefPtr<SharedWorkerScriptLoader> loader = adoptRef(new SharedWorkerScriptLoader(worker, port.release(), proxy.release()));
+ RefPtr<SharedWorkerScriptLoader> loader = adoptRef(new SharedWorkerScriptLoader(worker, port, proxy.release()));
loader->load(url);
}
}
diff --git a/WebCore/workers/SharedWorker.cpp b/WebCore/workers/SharedWorker.cpp
index cd856ff..b25b28e 100644
--- a/WebCore/workers/SharedWorker.cpp
+++ b/WebCore/workers/SharedWorker.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -42,22 +43,32 @@
namespace WebCore {
-SharedWorker::SharedWorker(const String& url, const String& name, ScriptExecutionContext* context, ExceptionCode& ec)
+inline SharedWorker::SharedWorker(ScriptExecutionContext* context)
: AbstractWorker(context)
{
- RefPtr<MessageChannel> channel = MessageChannel::create(scriptExecutionContext());
- m_port = channel->port1();
+}
+
+PassRefPtr<SharedWorker> SharedWorker::create(const String& url, const String& name, ScriptExecutionContext* context, ExceptionCode& ec)
+{
+ RefPtr<SharedWorker> worker = adoptRef(new SharedWorker(context));
+
+ RefPtr<MessageChannel> channel = MessageChannel::create(context);
+ worker->m_port = channel->port1();
OwnPtr<MessagePortChannel> remotePort = channel->port2()->disentangle(ec);
- ASSERT(!ec);
+ ASSERT(remotePort);
+
+ KURL scriptURL = worker->resolveURL(url, ec);
+ if (scriptURL.isEmpty())
+ return 0;
+
+ SharedWorkerRepository::connect(worker.get(), remotePort.release(), scriptURL, name, ec);
- KURL scriptUrl = resolveURL(url, ec);
- if (ec)
- return;
- SharedWorkerRepository::connect(this, remotePort.release(), scriptUrl, name, ec);
#if ENABLE(INSPECTOR)
- if (InspectorController* inspector = scriptExecutionContext()->inspectorController())
- inspector->didCreateWorker(asID(), scriptUrl.string(), true);
+ if (InspectorController* inspector = context->inspectorController())
+ inspector->didCreateWorker(worker->asID(), scriptURL.string(), true);
#endif
+
+ return worker.release();
}
SharedWorker::~SharedWorker()
diff --git a/WebCore/workers/SharedWorker.h b/WebCore/workers/SharedWorker.h
index 24aa02d..07aff19 100644
--- a/WebCore/workers/SharedWorker.h
+++ b/WebCore/workers/SharedWorker.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -33,26 +34,21 @@
#include "AbstractWorker.h"
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefPtr.h>
-
#if ENABLE(SHARED_WORKERS)
namespace WebCore {
class SharedWorker : public AbstractWorker {
public:
- static PassRefPtr<SharedWorker> create(const String& url, const String& name, ScriptExecutionContext* context, ExceptionCode& ec)
- {
- return adoptRef(new SharedWorker(url, name, context, ec));
- }
- ~SharedWorker();
- MessagePort* port() const { return m_port.get(); }
+ static PassRefPtr<SharedWorker> create(const String& url, const String& name, ScriptExecutionContext*, ExceptionCode&);
+ virtual ~SharedWorker();
- virtual SharedWorker* toSharedWorker() { return this; }
+ MessagePort* port() const { return m_port.get(); }
private:
- SharedWorker(const String& url, const String& name, ScriptExecutionContext*, ExceptionCode&);
+ SharedWorker(ScriptExecutionContext*);
+
+ virtual SharedWorker* toSharedWorker() { return this; }
RefPtr<MessagePort> m_port;
};
diff --git a/WebCore/workers/Worker.cpp b/WebCore/workers/Worker.cpp
index 53ca9ae..fda7c72 100644
--- a/WebCore/workers/Worker.cpp
+++ b/WebCore/workers/Worker.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
* Copyright (C) 2009 Google Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -50,21 +50,32 @@
namespace WebCore {
-Worker::Worker(const String& url, ScriptExecutionContext* context, ExceptionCode& ec)
+inline Worker::Worker(ScriptExecutionContext* context)
: AbstractWorker(context)
, m_contextProxy(WorkerContextProxy::create(this))
{
- KURL scriptURL = resolveURL(url, ec);
- if (ec)
- return;
+}
+
+PassRefPtr<Worker> Worker::create(const String& url, ScriptExecutionContext* context, ExceptionCode& ec)
+{
+ RefPtr<Worker> worker = adoptRef(new Worker(context));
+
+ KURL scriptURL = worker->resolveURL(url, ec);
+ if (scriptURL.isEmpty())
+ return 0;
+
+ worker->m_scriptLoader = adoptPtr(new WorkerScriptLoader(ResourceRequestBase::TargetIsWorker));
+ worker->m_scriptLoader->loadAsynchronously(context, scriptURL, DenyCrossOriginRequests, worker.get());
+
+ // The worker context does not exist while loading, so we must ensure that the worker object is not collected, nor are its event listeners.
+ worker->setPendingActivity(worker.get());
- m_scriptLoader = new WorkerScriptLoader(ResourceRequestBase::TargetIsWorker);
- m_scriptLoader->loadAsynchronously(scriptExecutionContext(), scriptURL, DenyCrossOriginRequests, 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.
#if ENABLE(INSPECTOR)
- if (InspectorController* inspector = scriptExecutionContext()->inspectorController())
- inspector->didCreateWorker(asID(), scriptURL.string(), false);
+ if (InspectorController* inspector = context->inspectorController())
+ inspector->didCreateWorker(worker->asID(), scriptURL.string(), false);
#endif
+
+ return worker.release();
}
Worker::~Worker()
diff --git a/WebCore/workers/Worker.h b/WebCore/workers/Worker.h
index 6b8fa84..69ae92e 100644
--- a/WebCore/workers/Worker.h
+++ b/WebCore/workers/Worker.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -53,13 +53,13 @@ namespace WebCore {
class Worker : public AbstractWorker, private WorkerScriptLoaderClient {
public:
- static PassRefPtr<Worker> create(const String& url, ScriptExecutionContext* context, ExceptionCode& ec) { return adoptRef(new Worker(url, context, ec)); }
- ~Worker();
+ static PassRefPtr<Worker> create(const String& url, ScriptExecutionContext*, ExceptionCode&);
+ virtual ~Worker();
virtual Worker* toWorker() { return this; }
- void postMessage(PassRefPtr<SerializedScriptValue>, ExceptionCode&);
- void postMessage(PassRefPtr<SerializedScriptValue>, const MessagePortArray*, ExceptionCode&);
+ void postMessage(PassRefPtr<SerializedScriptValue> message, ExceptionCode&);
+ void postMessage(PassRefPtr<SerializedScriptValue> message, const MessagePortArray*, ExceptionCode&);
// FIXME: remove this when we update the ObjC bindings (bug #28774).
void postMessage(PassRefPtr<SerializedScriptValue> message, MessagePort*, ExceptionCode&);
@@ -72,7 +72,7 @@ namespace WebCore {
DEFINE_ATTRIBUTE_EVENT_LISTENER(message);
private:
- Worker(const String&, ScriptExecutionContext*, ExceptionCode&);
+ Worker(ScriptExecutionContext*);
virtual void notifyFinished();
diff --git a/WebCore/workers/WorkerContext.cpp b/WebCore/workers/WorkerContext.cpp
index c710ba6..36a9f94 100644
--- a/WebCore/workers/WorkerContext.cpp
+++ b/WebCore/workers/WorkerContext.cpp
@@ -182,7 +182,7 @@ void WorkerContext::postTask(PassOwnPtr<Task> task)
thread()->runLoop().postTask(task);
}
-int WorkerContext::setTimeout(ScheduledAction* action, int timeout)
+int WorkerContext::setTimeout(PassOwnPtr<ScheduledAction> action, int timeout)
{
return DOMTimer::install(scriptExecutionContext(), action, timeout, true);
}
@@ -192,7 +192,7 @@ void WorkerContext::clearTimeout(int timeoutId)
DOMTimer::removeById(scriptExecutionContext(), timeoutId);
}
-int WorkerContext::setInterval(ScheduledAction* action, int timeout)
+int WorkerContext::setInterval(PassOwnPtr<ScheduledAction> action, int timeout)
{
return DOMTimer::install(scriptExecutionContext(), action, timeout, false);
}
diff --git a/WebCore/workers/WorkerContext.h b/WebCore/workers/WorkerContext.h
index 4091db1..56b0324 100644
--- a/WebCore/workers/WorkerContext.h
+++ b/WebCore/workers/WorkerContext.h
@@ -89,9 +89,9 @@ namespace WebCore {
WorkerNavigator* navigator() const;
// Timers
- int setTimeout(ScheduledAction*, int timeout);
+ int setTimeout(PassOwnPtr<ScheduledAction>, int timeout);
void clearTimeout(int timeoutId);
- int setInterval(ScheduledAction*, int timeout);
+ int setInterval(PassOwnPtr<ScheduledAction>, int timeout);
void clearInterval(int timeoutId);
// ScriptExecutionContext
diff --git a/WebCore/workers/WorkerMessagingProxy.cpp b/WebCore/workers/WorkerMessagingProxy.cpp
index 2180dd4..21994cc 100644
--- a/WebCore/workers/WorkerMessagingProxy.cpp
+++ b/WebCore/workers/WorkerMessagingProxy.cpp
@@ -243,7 +243,7 @@ void WorkerMessagingProxy::startWorkerContext(const KURL& scriptURL, const Strin
void WorkerMessagingProxy::postMessageToWorkerObject(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels)
{
- m_scriptExecutionContext->postTask(MessageWorkerTask::create(message, channels.release(), this));
+ m_scriptExecutionContext->postTask(MessageWorkerTask::create(message, channels, this));
}
void WorkerMessagingProxy::postMessageToWorkerContext(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels)
@@ -253,9 +253,9 @@ void WorkerMessagingProxy::postMessageToWorkerContext(PassRefPtr<SerializedScrip
if (m_workerThread) {
++m_unconfirmedMessageCount;
- m_workerThread->runLoop().postTask(MessageWorkerContextTask::create(message, channels.release()));
+ m_workerThread->runLoop().postTask(MessageWorkerContextTask::create(message, channels));
} else
- m_queuedEarlyTasks.append(MessageWorkerContextTask::create(message, channels.release()));
+ m_queuedEarlyTasks.append(MessageWorkerContextTask::create(message, channels));
}
void WorkerMessagingProxy::postTaskForModeToWorkerContext(PassOwnPtr<ScriptExecutionContext::Task> task, const String& mode)
diff --git a/WebCore/xml/XMLHttpRequest.cpp b/WebCore/xml/XMLHttpRequest.cpp
index da95d32..8762bb5 100644
--- a/WebCore/xml/XMLHttpRequest.cpp
+++ b/WebCore/xml/XMLHttpRequest.cpp
@@ -872,6 +872,10 @@ void XMLHttpRequest::didFail(const ResourceError& error)
return;
}
+ // Network failures are already reported to Web Inspector by ResourceLoader.
+ if (error.domain() == errorDomainWebKitInternal)
+ reportUnsafeUsage(scriptExecutionContext(), "XMLHttpRequest cannot load " + error.failingURL() + ". " + error.localizedDescription());
+
m_exceptionCode = XMLHttpRequestException::NETWORK_ERR;
networkError();
}
diff --git a/WebCore/xml/XPathEvaluator.idl b/WebCore/xml/XPathEvaluator.idl
index c075b01..30df23a 100644
--- a/WebCore/xml/XPathEvaluator.idl
+++ b/WebCore/xml/XPathEvaluator.idl
@@ -21,7 +21,7 @@ module xpath {
interface [CanBeConstructed, Conditional=XPATH] XPathEvaluator {
XPathExpression createExpression(in DOMString expression,
in XPathNSResolver resolver)
- raises(core::DOMException);
+ raises(DOMException);
XPathNSResolver createNSResolver(in Node nodeResolver);
diff --git a/WebCore/xml/XPathFunctions.cpp b/WebCore/xml/XPathFunctions.cpp
index a727680..41bf795 100644
--- a/WebCore/xml/XPathFunctions.cpp
+++ b/WebCore/xml/XPathFunctions.cpp
@@ -516,11 +516,13 @@ Value FunSubstring::evaluate() const
if (pos > long(s.length()))
return "";
- if (haveLength && pos < 1) {
- len -= 1 - pos;
+ if (pos < 1) {
+ if (haveLength) {
+ len -= 1 - pos;
+ if (len < 1)
+ return "";
+ }
pos = 1;
- if (len < 1)
- return "";
}
return s.substring(pos - 1, len);
diff --git a/WebCore/xml/XSLTProcessorLibxslt.cpp b/WebCore/xml/XSLTProcessorLibxslt.cpp
index 4ac9f4c..ed4303d 100644
--- a/WebCore/xml/XSLTProcessorLibxslt.cpp
+++ b/WebCore/xml/XSLTProcessorLibxslt.cpp
@@ -297,7 +297,7 @@ bool XSLTProcessor::transformToString(Node* sourceNode, String& mimeType, String
xsltTransformContextPtr transformContext = xsltNewTransformContext(sheet, sourceDoc);
registerXSLTExtensions(transformContext);
- // <http://bugs.webkit.org/show_bug.cgi?id=16077>: XSLT processor <xsl:sort> algorithm only compares by code point
+ // <http://bugs.webkit.org/show_bug.cgi?id=16077>: XSLT processor <xsl:sort> algorithm only compares by code point.
xsltSetCtxtSortFunc(transformContext, xsltUnicodeSortFunction);
// This is a workaround for a bug in libxslt.