summaryrefslogtreecommitdiffstats
path: root/Source/WebCore
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore')
-rw-r--r--Source/WebCore/Android.derived.jscbindings.mk753
-rw-r--r--Source/WebCore/Android.jscbindings.mk241
-rw-r--r--Source/WebCore/Android.mk1
-rw-r--r--Source/WebCore/bridge/jni/JavaMethodJobject.cpp8
-rw-r--r--Source/WebCore/dom/DOMTextContentWalker.cpp90
-rw-r--r--Source/WebCore/dom/DOMTextContentWalker.h60
-rw-r--r--Source/WebCore/editing/SelectionController.cpp4
-rw-r--r--Source/WebCore/editing/TextIterator.cpp71
-rw-r--r--Source/WebCore/editing/TextIterator.h22
-rw-r--r--Source/WebCore/html/HTMLAnchorElement.cpp4
-rw-r--r--Source/WebCore/platform/android/KeyEventAndroid.cpp4
-rw-r--r--Source/WebCore/platform/android/RenderThemeAndroid.cpp33
-rw-r--r--Source/WebCore/platform/android/RenderThemeAndroid.h6
-rw-r--r--Source/WebCore/platform/android/TemporaryLinkStubs.cpp19
-rw-r--r--Source/WebCore/platform/graphics/GraphicsContext.cpp2
-rw-r--r--Source/WebCore/platform/graphics/GraphicsContext.h4
-rw-r--r--Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp2
-rw-r--r--Source/WebCore/platform/graphics/android/GLExtras.cpp51
-rw-r--r--Source/WebCore/platform/graphics/android/GLExtras.h6
-rw-r--r--Source/WebCore/platform/graphics/android/GLWebViewState.cpp46
-rw-r--r--Source/WebCore/platform/graphics/android/GLWebViewState.h9
-rw-r--r--Source/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp49
-rw-r--r--Source/WebCore/platform/graphics/android/ImageAndroid.cpp2
-rw-r--r--Source/WebCore/platform/graphics/android/MediaTexture.cpp3
-rw-r--r--Source/WebCore/platform/graphics/android/ShaderProgram.cpp99
-rw-r--r--Source/WebCore/platform/graphics/android/ShaderProgram.h10
-rw-r--r--Source/WebCore/platform/graphics/android/TilesManager.cpp22
-rw-r--r--Source/WebCore/platform/network/android/ResourceHandleAndroid.cpp4
-rw-r--r--Source/WebCore/platform/network/android/ResourceLoaderAndroid.h1
-rw-r--r--Source/WebCore/platform/network/android/ResourceRequestAndroid.cpp7
-rw-r--r--Source/WebCore/platform/text/android/HyphenationAndroid.cpp2
-rw-r--r--Source/WebCore/plugins/PluginView.cpp3
-rw-r--r--Source/WebCore/plugins/PluginView.h2
-rw-r--r--Source/WebCore/plugins/android/PluginViewAndroid.cpp7
-rw-r--r--Source/WebCore/rendering/InlineTextBox.cpp4
-rw-r--r--Source/WebCore/rendering/RenderBlockLineLayout.cpp4
-rw-r--r--Source/WebCore/rendering/RenderHTMLCanvas.cpp7
-rw-r--r--Source/WebCore/rendering/RenderLayerCompositor.cpp4
38 files changed, 462 insertions, 1204 deletions
diff --git a/Source/WebCore/Android.derived.jscbindings.mk b/Source/WebCore/Android.derived.jscbindings.mk
deleted file mode 100644
index f48fc6a..0000000
--- a/Source/WebCore/Android.derived.jscbindings.mk
+++ /dev/null
@@ -1,753 +0,0 @@
-
-##
-## Copyright 2009, The Android Open Source Project
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions
-## are met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in the
-## documentation and/or other materials provided with the distribution.
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
-## EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-## PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-## OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-##
-
-# lookup tables for old-style JavaScript bindings
-create_hash_table := $(LOCAL_PATH)/../JavaScriptCore/create_hash_table
-
-GEN := $(addprefix $(intermediates)/, \
- bindings/js/JSDOMWindowBase.lut.h \
- )
-$(GEN): PRIVATE_CUSTOM_TOOL = perl $(create_hash_table) $< > $@
-$(GEN): $(intermediates)/bindings/js/%.lut.h: $(LOCAL_PATH)/bindings/js/%.cpp $(create_hash_table)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-
-GEN := $(intermediates)/bindings/js/JSHTMLInputElementBaseTable.cpp
-$(GEN): PRIVATE_CUSTOM_TOOL = perl $(create_hash_table) $< > $@
-$(GEN): $(intermediates)/bindings/js/%Table.cpp: $(LOCAL_PATH)/bindings/js/%.cpp $(create_hash_table)
- $(transform-generated-source)
-$(intermediates)/bindings/js/JSHTMLInputElementBase.o : $(GEN)
-
-# lookup tables for old-style JavaScript bindings
-js_binding_scripts := $(addprefix $(LOCAL_PATH)/,\
- bindings/scripts/CodeGenerator.pm \
- bindings/scripts/IDLParser.pm \
- bindings/scripts/IDLStructure.pm \
- bindings/scripts/generate-bindings.pl \
- )
-
-FEATURE_DEFINES := ENABLE_ORIENTATION_EVENTS=1 ENABLE_TOUCH_EVENTS=1 ENABLE_DATABASE=1 ENABLE_OFFLINE_WEB_APPLICATIONS=1 ENABLE_DOM_STORAGE=1 ENABLE_VIDEO=1 ENABLE_GEOLOCATION=1 ENABLE_CONNECTION=1 ENABLE_APPLICATION_INSTALLED=1 ENABLE_XPATH=1 ENABLE_XSLT=1 ENABLE_DEVICE_ORIENTATION=1 ENABLE_FILE_READER=1 ENABLE_BLOB=1 ENABLE_WEB_TIMING=1
-
-ifeq ($(ENABLE_SVG), true)
- FEATURE_DEFINES += ENABLE_SVG=1
-endif
-
-# CSS
-GEN := \
- $(intermediates)/css/JSCSSCharsetRule.h \
- $(intermediates)/css/JSCSSFontFaceRule.h \
- $(intermediates)/css/JSCSSImportRule.h \
- $(intermediates)/css/JSCSSMediaRule.h \
- $(intermediates)/css/JSCSSPageRule.h \
- $(intermediates)/css/JSCSSPrimitiveValue.h \
- $(intermediates)/css/JSCSSRule.h \
- $(intermediates)/css/JSCSSRuleList.h \
- $(intermediates)/css/JSCSSStyleDeclaration.h \
- $(intermediates)/css/JSCSSStyleRule.h \
- $(intermediates)/css/JSCSSStyleSheet.h \
- $(intermediates)/css/JSCSSValue.h \
- $(intermediates)/css/JSCSSValueList.h \
- $(intermediates)/css/JSCounter.h \
- $(intermediates)/css/JSMediaList.h \
- $(intermediates)/css/JSMediaQueryList.h \
- $(intermediates)/css/JSRGBColor.h \
- $(intermediates)/css/JSRect.h \
- $(intermediates)/css/JSStyleMedia.h \
- $(intermediates)/css/JSStyleSheet.h \
- $(intermediates)/css/JSStyleSheetList.h \
- $(intermediates)/css/JSWebKitCSSKeyframeRule.h \
- $(intermediates)/css/JSWebKitCSSKeyframesRule.h \
- $(intermediates)/css/JSWebKitCSSMatrix.h \
- $(intermediates)/css/JSWebKitCSSTransformValue.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/css/JS%.h : $(LOCAL_PATH)/css/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/css/%.cpp : $(intermediates)/css/%.h
-
-# DOM
-GEN := \
- $(intermediates)/dom/JSAttr.h \
- $(intermediates)/dom/JSBeforeLoadEvent.h \
- $(intermediates)/dom/JSCDATASection.h \
- $(intermediates)/dom/JSCharacterData.h \
- $(intermediates)/dom/JSClientRect.h \
- $(intermediates)/dom/JSClientRectList.h \
- $(intermediates)/dom/JSClipboard.h \
- $(intermediates)/dom/JSComment.h \
- $(intermediates)/dom/JSCustomEvent.h \
- $(intermediates)/dom/JSCompositionEvent.h \
- $(intermediates)/dom/JSDOMCoreException.h \
- $(intermediates)/dom/JSDOMImplementation.h \
- $(intermediates)/dom/JSDOMStringList.h \
- $(intermediates)/dom/JSDOMStringMap.h \
- $(intermediates)/dom/JSDataTransferItems.h \
- $(intermediates)/dom/JSDeviceMotionEvent.h \
- $(intermediates)/dom/JSDeviceOrientationEvent.h \
- $(intermediates)/dom/JSDocument.h \
- $(intermediates)/dom/JSDocumentFragment.h \
- $(intermediates)/dom/JSDocumentType.h \
- $(intermediates)/dom/JSElement.h \
- $(intermediates)/dom/JSEntity.h \
- $(intermediates)/dom/JSEntityReference.h \
- $(intermediates)/dom/JSErrorEvent.h \
- $(intermediates)/dom/JSEvent.h \
- $(intermediates)/dom/JSEventException.h \
- $(intermediates)/dom/JSHashChangeEvent.h \
- $(intermediates)/dom/JSKeyboardEvent.h \
- $(intermediates)/dom/JSMessageChannel.h \
- $(intermediates)/dom/JSMessageEvent.h \
- $(intermediates)/dom/JSMessagePort.h \
- $(intermediates)/dom/JSMouseEvent.h \
- $(intermediates)/dom/JSMutationEvent.h \
- $(intermediates)/dom/JSNamedNodeMap.h \
- $(intermediates)/dom/JSNode.h \
- $(intermediates)/dom/JSNodeFilter.h \
- $(intermediates)/dom/JSNodeIterator.h \
- $(intermediates)/dom/JSNodeList.h \
- $(intermediates)/dom/JSNotation.h \
- $(intermediates)/dom/JSOverflowEvent.h \
- $(intermediates)/dom/JSPageTransitionEvent.h \
- $(intermediates)/dom/JSPopStateEvent.h \
- $(intermediates)/dom/JSProcessingInstruction.h \
- $(intermediates)/dom/JSProgressEvent.h \
- $(intermediates)/dom/JSRange.h \
- $(intermediates)/dom/JSRangeException.h \
- $(intermediates)/dom/JSText.h \
- $(intermediates)/dom/JSTextEvent.h \
- $(intermediates)/dom/JSTouch.h \
- $(intermediates)/dom/JSTouchEvent.h \
- $(intermediates)/dom/JSTouchList.h \
- $(intermediates)/dom/JSTreeWalker.h \
- $(intermediates)/dom/JSUIEvent.h \
- $(intermediates)/dom/JSWebKitAnimationEvent.h \
- $(intermediates)/dom/JSWebKitTransitionEvent.h \
- $(intermediates)/dom/JSWheelEvent.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/dom/JS%.h : $(LOCAL_PATH)/dom/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/dom/%.cpp : $(intermediates)/dom/%.h
-
-# Fileapi
-GEN := \
- $(intermediates)/fileapi/JSBlob.h \
- $(intermediates)/fileapi/JSDOMFileSystem.h \
- $(intermediates)/fileapi/JSDOMFileSystemSync.h \
- $(intermediates)/fileapi/JSDirectoryEntry.h \
- $(intermediates)/fileapi/JSDirectoryEntrySync.h \
- $(intermediates)/fileapi/JSDirectoryReader.h \
- $(intermediates)/fileapi/JSDirectoryReaderSync.h \
- $(intermediates)/fileapi/JSEntriesCallback.h \
- $(intermediates)/fileapi/JSEntry.h \
- $(intermediates)/fileapi/JSEntryArray.h \
- $(intermediates)/fileapi/JSEntryArraySync.h \
- $(intermediates)/fileapi/JSEntryCallback.h \
- $(intermediates)/fileapi/JSEntrySync.h \
- $(intermediates)/fileapi/JSErrorCallback.h \
- $(intermediates)/fileapi/JSFile.h \
- $(intermediates)/fileapi/JSFileCallback.h \
- $(intermediates)/fileapi/JSFileEntry.h \
- $(intermediates)/fileapi/JSFileEntrySync.h \
- $(intermediates)/fileapi/JSFileError.h \
- $(intermediates)/fileapi/JSFileException.h \
- $(intermediates)/fileapi/JSFileList.h \
- $(intermediates)/fileapi/JSFileReader.h \
- $(intermediates)/fileapi/JSFileReaderSync.h \
- $(intermediates)/fileapi/JSFileSystemCallback.h \
- $(intermediates)/fileapi/JSFileWriter.h \
- $(intermediates)/fileapi/JSFileWriterCallback.h \
- $(intermediates)/fileapi/JSMetadata.h \
- $(intermediates)/fileapi/JSMetadataCallback.h \
- $(intermediates)/fileapi/JSWebKitBlobBuilder.h \
- $(intermediates)/fileapi/JSWebKitFlags.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --include fileapi --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/fileapi/JS%.h : $(LOCAL_PATH)/fileapi/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/fileapi/%.cpp : $(intermediates)/fileapi/%.h
-
-# HTML
-GEN := \
- $(intermediates)/html/JSDOMFormData.h \
- $(intermediates)/html/JSDOMSettableTokenList.h \
- $(intermediates)/html/JSDOMTokenList.h \
- $(intermediates)/html/JSDOMURL.h \
- $(intermediates)/html/JSDataGridColumn.h \
- $(intermediates)/html/JSDataGridColumnList.h \
- $(intermediates)/html/JSHTMLAllCollection.h \
- $(intermediates)/html/JSHTMLAnchorElement.h \
- $(intermediates)/html/JSHTMLAppletElement.h \
- $(intermediates)/html/JSHTMLAreaElement.h \
- $(intermediates)/html/JSHTMLAudioElement.h \
- $(intermediates)/html/JSHTMLBRElement.h \
- $(intermediates)/html/JSHTMLBaseElement.h \
- $(intermediates)/html/JSHTMLBaseFontElement.h \
- $(intermediates)/html/JSHTMLBlockquoteElement.h \
- $(intermediates)/html/JSHTMLBodyElement.h \
- $(intermediates)/html/JSHTMLButtonElement.h \
- $(intermediates)/html/JSHTMLCanvasElement.h \
- $(intermediates)/html/JSHTMLCollection.h \
- $(intermediates)/html/JSHTMLDataGridElement.h \
- $(intermediates)/html/JSHTMLDataGridCellElement.h \
- $(intermediates)/html/JSHTMLDataGridColElement.h \
- $(intermediates)/html/JSHTMLDataGridRowElement.h \
- $(intermediates)/html/JSHTMLDataListElement.h \
- $(intermediates)/html/JSHTMLDetailsElement.h \
- $(intermediates)/html/JSHTMLDListElement.h \
- $(intermediates)/html/JSHTMLDirectoryElement.h \
- $(intermediates)/html/JSHTMLDivElement.h \
- $(intermediates)/html/JSHTMLDocument.h \
- $(intermediates)/html/JSHTMLElement.h \
- $(intermediates)/html/JSHTMLEmbedElement.h \
- $(intermediates)/html/JSHTMLFieldSetElement.h \
- $(intermediates)/html/JSHTMLFontElement.h \
- $(intermediates)/html/JSHTMLFormElement.h \
- $(intermediates)/html/JSHTMLFrameElement.h \
- $(intermediates)/html/JSHTMLFrameSetElement.h \
- $(intermediates)/html/JSHTMLHRElement.h \
- $(intermediates)/html/JSHTMLHeadElement.h \
- $(intermediates)/html/JSHTMLHeadingElement.h \
- $(intermediates)/html/JSHTMLHtmlElement.h \
- $(intermediates)/html/JSHTMLIFrameElement.h \
- $(intermediates)/html/JSHTMLImageElement.h \
- $(intermediates)/html/JSHTMLInputElement.h \
- $(intermediates)/html/JSHTMLIsIndexElement.h \
- $(intermediates)/html/JSHTMLKeygenElement.h \
- $(intermediates)/html/JSHTMLLIElement.h \
- $(intermediates)/html/JSHTMLLabelElement.h \
- $(intermediates)/html/JSHTMLLegendElement.h \
- $(intermediates)/html/JSHTMLLinkElement.h \
- $(intermediates)/html/JSHTMLMapElement.h \
- $(intermediates)/html/JSHTMLMarqueeElement.h \
- $(intermediates)/html/JSHTMLMediaElement.h \
- $(intermediates)/html/JSHTMLMenuElement.h \
- $(intermediates)/html/JSHTMLMetaElement.h \
- $(intermediates)/html/JSHTMLMeterElement.h \
- $(intermediates)/html/JSHTMLModElement.h \
- $(intermediates)/html/JSHTMLOListElement.h \
- $(intermediates)/html/JSHTMLObjectElement.h \
- $(intermediates)/html/JSHTMLOptGroupElement.h \
- $(intermediates)/html/JSHTMLOptionElement.h \
- $(intermediates)/html/JSHTMLOptionsCollection.h \
- $(intermediates)/html/JSHTMLOutputElement.h \
- $(intermediates)/html/JSHTMLParagraphElement.h \
- $(intermediates)/html/JSHTMLParamElement.h \
- $(intermediates)/html/JSHTMLPreElement.h \
- $(intermediates)/html/JSHTMLProgressElement.h \
- $(intermediates)/html/JSHTMLQuoteElement.h \
- $(intermediates)/html/JSHTMLScriptElement.h \
- $(intermediates)/html/JSHTMLSelectElement.h \
- $(intermediates)/html/JSHTMLSourceElement.h \
- $(intermediates)/html/JSHTMLStyleElement.h \
- $(intermediates)/html/JSHTMLTableCaptionElement.h \
- $(intermediates)/html/JSHTMLTableCellElement.h \
- $(intermediates)/html/JSHTMLTableColElement.h \
- $(intermediates)/html/JSHTMLTableElement.h \
- $(intermediates)/html/JSHTMLTableRowElement.h \
- $(intermediates)/html/JSHTMLTableSectionElement.h \
- $(intermediates)/html/JSHTMLTextAreaElement.h \
- $(intermediates)/html/JSHTMLTitleElement.h \
- $(intermediates)/html/JSHTMLUListElement.h \
- $(intermediates)/html/JSHTMLVideoElement.h \
- $(intermediates)/html/JSImageData.h \
- $(intermediates)/html/JSMediaError.h \
- $(intermediates)/html/JSTextMetrics.h \
- $(intermediates)/html/JSTimeRanges.h \
- $(intermediates)/html/JSValidityState.h \
- $(intermediates)/html/JSVoidCallback.h
-
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/html/JS%.h : $(LOCAL_PATH)/html/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/html/%.cpp : $(intermediates)/html/%.h
-
-# Canvas
-GEN := \
- $(intermediates)/html/canvas/JSArrayBuffer.h \
- $(intermediates)/html/canvas/JSArrayBufferView.h \
- $(intermediates)/html/canvas/JSCanvasGradient.h \
- $(intermediates)/html/canvas/JSCanvasPattern.h \
- $(intermediates)/html/canvas/JSCanvasRenderingContext.h \
- $(intermediates)/html/canvas/JSCanvasRenderingContext2D.h \
- $(intermediates)/html/canvas/JSDataView.h \
- $(intermediates)/html/canvas/JSFloat32Array.h \
- $(intermediates)/html/canvas/JSFloat64Array.h \
- $(intermediates)/html/canvas/JSInt8Array.h \
- $(intermediates)/html/canvas/JSInt16Array.h \
- $(intermediates)/html/canvas/JSInt32Array.h \
- $(intermediates)/html/canvas/JSOESTextureFloat.h \
- $(intermediates)/html/canvas/JSOESVertexArrayObject.h \
- $(intermediates)/html/canvas/JSUint8Array.h \
- $(intermediates)/html/canvas/JSUint16Array.h \
- $(intermediates)/html/canvas/JSUint32Array.h \
- $(intermediates)/html/canvas/JSWebGLActiveInfo.h \
- $(intermediates)/html/canvas/JSWebGLBuffer.h \
- $(intermediates)/html/canvas/JSWebGLFramebuffer.h \
- $(intermediates)/html/canvas/JSWebGLProgram.h \
- $(intermediates)/html/canvas/JSWebGLRenderbuffer.h \
- $(intermediates)/html/canvas/JSWebGLRenderingContext.h \
- $(intermediates)/html/canvas/JSWebGLShader.h \
- $(intermediates)/html/canvas/JSWebGLTexture.h \
- $(intermediates)/html/canvas/JSWebGLUniformLocation.h \
- $(intermediates)/html/canvas/JSWebGLVertexArrayObjectOES.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/html/canvas/JS%.h : $(LOCAL_PATH)/html/canvas/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/html/canvas/%.cpp : $(intermediates)/html/canvas/%.h
-
-# Appcache
-GEN := \
- $(intermediates)/loader/appcache/JSDOMApplicationCache.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/loader/appcache/JS%.h : $(LOCAL_PATH)/loader/appcache/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/loader/appcache/%.cpp : $(intermediates)/loader/appcache/%.h
-
-# page
-GEN := \
- $(intermediates)/page/JSBarInfo.h \
- $(intermediates)/page/JSConnection.h \
- $(intermediates)/page/JSConsole.h \
- $(intermediates)/page/JSCoordinates.h \
- $(intermediates)/page/JSCrypto.h \
- $(intermediates)/page/JSDOMSelection.h \
- $(intermediates)/page/JSDOMWindow.h \
- $(intermediates)/page/JSEventSource.h \
- $(intermediates)/page/JSGeolocation.h \
- $(intermediates)/page/JSGeoposition.h \
- $(intermediates)/page/JSHistory.h \
- $(intermediates)/page/JSLocation.h \
- $(intermediates)/page/JSMemoryInfo.h \
- $(intermediates)/page/JSNavigator.h \
- $(intermediates)/page/JSNavigatorUserMediaError.h \
- $(intermediates)/page/JSNavigatorUserMediaErrorCallback.h \
- $(intermediates)/page/JSNavigatorUserMediaSuccessCallback.h \
- $(intermediates)/page/JSPerformance.h \
- $(intermediates)/page/JSPerformanceNavigation.h \
- $(intermediates)/page/JSPerformanceTiming.h \
- $(intermediates)/page/JSPositionError.h \
- $(intermediates)/page/JSScreen.h \
- $(intermediates)/page/JSSpeechInputEvent.h \
- $(intermediates)/page/JSWebKitAnimation.h \
- $(intermediates)/page/JSWebKitAnimationList.h \
- $(intermediates)/page/JSWebKitPoint.h \
- $(intermediates)/page/JSWorkerNavigator.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/page/JS%.h : $(LOCAL_PATH)/page/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/page/%.cpp : $(intermediates)/page/%.h
-
-GEN := \
- $(intermediates)/plugins/JSDOMMimeType.h \
- $(intermediates)/plugins/JSDOMMimeTypeArray.h \
- $(intermediates)/plugins/JSDOMPlugin.h \
- $(intermediates)/plugins/JSDOMPluginArray.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/plugins/JS%.h : $(LOCAL_PATH)/plugins/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/plugins/%.cpp : $(intermediates)/plugins/%.h
-
-# Database
-GEN := \
- $(intermediates)/storage/JSDatabase.h \
- $(intermediates)/storage/JSDatabaseCallback.h \
- $(intermediates)/storage/JSDatabaseSync.h \
- $(intermediates)/storage/JSSQLError.h \
- $(intermediates)/storage/JSSQLException.h \
- $(intermediates)/storage/JSSQLResultSet.h \
- $(intermediates)/storage/JSSQLResultSetRowList.h \
- $(intermediates)/storage/JSSQLStatementCallback.h \
- $(intermediates)/storage/JSSQLStatementErrorCallback.h \
- $(intermediates)/storage/JSSQLTransaction.h \
- $(intermediates)/storage/JSSQLTransactionCallback.h \
- $(intermediates)/storage/JSSQLTransactionSync.h \
- $(intermediates)/storage/JSSQLTransactionSyncCallback.h \
- $(intermediates)/storage/JSSQLTransactionErrorCallback.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --include storage --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/storage/JS%.h : $(LOCAL_PATH)/storage/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/storage/%.cpp : $(intermediates)/storage/%.h
-
-# DOM Storage
-GEN := \
- $(intermediates)/storage/JSStorage.h \
- $(intermediates)/storage/JSStorageEvent.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/storage/JS%.h : $(LOCAL_PATH)/storage/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/storage/%.cpp : $(intermediates)/storage/%.h
-
-# Indexed Database
-GEN := \
- $(intermediates)/storage/JSIDBAny.h \
- $(intermediates)/storage/JSIDBCursor.h \
- $(intermediates)/storage/JSIDBCursorWithValue.h \
- $(intermediates)/storage/JSIDBDatabaseError.h \
- $(intermediates)/storage/JSIDBDatabaseException.h \
- $(intermediates)/storage/JSIDBDatabase.h \
- $(intermediates)/storage/JSIDBFactory.h \
- $(intermediates)/storage/JSIDBIndex.h \
- $(intermediates)/storage/JSIDBKey.h \
- $(intermediates)/storage/JSIDBKeyRange.h \
- $(intermediates)/storage/JSIDBObjectStore.h \
- $(intermediates)/storage/JSIDBRequest.h \
- $(intermediates)/storage/JSIDBTransaction.h \
- $(intermediates)/storage/JSIDBVersionChangeEvent.h \
- $(intermediates)/storage/JSIDBVersionChangeRequest.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --include storage --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/storage/JS%.h : $(LOCAL_PATH)/storage/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/storage/%.cpp : $(intermediates)/storage/%.h
-
-# SVG
-ifeq ($(ENABLE_SVG), true)
-GEN := \
- $(intermediates)/svg/JSSVGAElement.h \
- $(intermediates)/svg/JSSVGAltGlyphElement.h \
- $(intermediates)/svg/JSSVGAngle.h \
- $(intermediates)/svg/JSSVGAnimateColorElement.h \
- $(intermediates)/svg/JSSVGAnimateElement.h \
- $(intermediates)/svg/JSSVGAnimateTransformElement.h \
- $(intermediates)/svg/JSSVGAnimatedAngle.h \
- $(intermediates)/svg/JSSVGAnimatedBoolean.h \
- $(intermediates)/svg/JSSVGAnimatedEnumeration.h \
- $(intermediates)/svg/JSSVGAnimatedInteger.h \
- $(intermediates)/svg/JSSVGAnimatedLength.h \
- $(intermediates)/svg/JSSVGAnimatedLengthList.h \
- $(intermediates)/svg/JSSVGAnimatedNumber.h \
- $(intermediates)/svg/JSSVGAnimatedNumberList.h \
- $(intermediates)/svg/JSSVGAnimatedPreserveAspectRatio.h \
- $(intermediates)/svg/JSSVGAnimatedRect.h \
- $(intermediates)/svg/JSSVGAnimatedString.h \
- $(intermediates)/svg/JSSVGAnimatedTransformList.h \
- $(intermediates)/svg/JSSVGAnimationElement.h \
- $(intermediates)/svg/JSSVGCircleElement.h \
- $(intermediates)/svg/JSSVGClipPathElement.h \
- $(intermediates)/svg/JSSVGColor.h \
- $(intermediates)/svg/JSSVGComponentTransferFunctionElement.h \
- $(intermediates)/svg/JSSVGCursorElement.h \
- $(intermediates)/svg/JSSVGDefsElement.h \
- $(intermediates)/svg/JSSVGDescElement.h \
- $(intermediates)/svg/JSSVGDocument.h \
- $(intermediates)/svg/JSSVGElement.h \
- $(intermediates)/svg/JSSVGElementInstance.h \
- $(intermediates)/svg/JSSVGElementInstanceList.h \
- $(intermediates)/svg/JSSVGEllipseElement.h \
- $(intermediates)/svg/JSSVGException.h \
- $(intermediates)/svg/JSSVGFEBlendElement.h \
- $(intermediates)/svg/JSSVGFEColorMatrixElement.h \
- $(intermediates)/svg/JSSVGFEComponentTransferElement.h \
- $(intermediates)/svg/JSSVGFECompositeElement.h \
- $(intermediates)/svg/JSSVGFEConvolveMatrixElement.h \
- $(intermediates)/svg/JSSVGFEDiffuseLightingElement.h \
- $(intermediates)/svg/JSSVGFEDisplacementMapElement.h \
- $(intermediates)/svg/JSSVGFEDistantLightElement.h \
- $(intermediates)/svg/JSSVGFEFloodElement.h \
- $(intermediates)/svg/JSSVGFEFuncAElement.h \
- $(intermediates)/svg/JSSVGFEFuncBElement.h \
- $(intermediates)/svg/JSSVGFEFuncGElement.h \
- $(intermediates)/svg/JSSVGFEFuncRElement.h \
- $(intermediates)/svg/JSSVGFEGaussianBlurElement.h \
- $(intermediates)/svg/JSSVGFEImageElement.h \
- $(intermediates)/svg/JSSVGFEMergeElement.h \
- $(intermediates)/svg/JSSVGFEMergeNodeElement.h \
- $(intermediates)/svg/JSSVGFEOffsetElement.h \
- $(intermediates)/svg/JSSVGFEPointLightElement.h \
- $(intermediates)/svg/JSSVGFESpecularLightingElement.h \
- $(intermediates)/svg/JSSVGFESpotLightElement.h \
- $(intermediates)/svg/JSSVGFETileElement.h \
- $(intermediates)/svg/JSSVGFETurbulenceElement.h \
- $(intermediates)/svg/JSSVGFilterElement.h \
- $(intermediates)/svg/JSSVGFontElement.h \
- $(intermediates)/svg/JSSVGFontFaceElement.h \
- $(intermediates)/svg/JSSVGFontFaceFormatElement.h \
- $(intermediates)/svg/JSSVGFontFaceNameElement.h \
- $(intermediates)/svg/JSSVGFontFaceSrcElement.h \
- $(intermediates)/svg/JSSVGFontFaceUriElement.h \
- $(intermediates)/svg/JSSVGForeignObjectElement.h \
- $(intermediates)/svg/JSSVGGElement.h \
- $(intermediates)/svg/JSSVGGlyphElement.h \
- $(intermediates)/svg/JSSVGGradientElement.h \
- $(intermediates)/svg/JSSVGHKernElement.h \
- $(intermediates)/svg/JSSVGImageElement.h \
- $(intermediates)/svg/JSSVGLength.h \
- $(intermediates)/svg/JSSVGLengthList.h \
- $(intermediates)/svg/JSSVGLineElement.h \
- $(intermediates)/svg/JSSVGLinearGradientElement.h \
- $(intermediates)/svg/JSSVGMarkerElement.h \
- $(intermediates)/svg/JSSVGMaskElement.h \
- $(intermediates)/svg/JSSVGMatrix.h \
- $(intermediates)/svg/JSSVGMetadataElement.h \
- $(intermediates)/svg/JSSVGMissingGlyphElement.h \
- $(intermediates)/svg/JSSVGNumber.h \
- $(intermediates)/svg/JSSVGNumberList.h \
- $(intermediates)/svg/JSSVGPaint.h \
- $(intermediates)/svg/JSSVGPathElement.h \
- $(intermediates)/svg/JSSVGPathSeg.h \
- $(intermediates)/svg/JSSVGPathSegArcAbs.h \
- $(intermediates)/svg/JSSVGPathSegArcRel.h \
- $(intermediates)/svg/JSSVGPathSegClosePath.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoCubicAbs.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoCubicRel.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothAbs.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothRel.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticAbs.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticRel.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothAbs.h \
- $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothRel.h \
- $(intermediates)/svg/JSSVGPathSegLinetoAbs.h \
- $(intermediates)/svg/JSSVGPathSegLinetoHorizontalAbs.h \
- $(intermediates)/svg/JSSVGPathSegLinetoHorizontalRel.h \
- $(intermediates)/svg/JSSVGPathSegLinetoRel.h \
- $(intermediates)/svg/JSSVGPathSegLinetoVerticalAbs.h \
- $(intermediates)/svg/JSSVGPathSegLinetoVerticalRel.h \
- $(intermediates)/svg/JSSVGPathSegList.h \
- $(intermediates)/svg/JSSVGPathSegMovetoAbs.h \
- $(intermediates)/svg/JSSVGPathSegMovetoRel.h \
- $(intermediates)/svg/JSSVGPatternElement.h \
- $(intermediates)/svg/JSSVGPoint.h \
- $(intermediates)/svg/JSSVGPointList.h \
- $(intermediates)/svg/JSSVGPolygonElement.h \
- $(intermediates)/svg/JSSVGPolylineElement.h \
- $(intermediates)/svg/JSSVGPreserveAspectRatio.h \
- $(intermediates)/svg/JSSVGRadialGradientElement.h \
- $(intermediates)/svg/JSSVGRect.h \
- $(intermediates)/svg/JSSVGRectElement.h \
- $(intermediates)/svg/JSSVGRenderingIntent.h \
- $(intermediates)/svg/JSSVGSVGElement.h \
- $(intermediates)/svg/JSSVGScriptElement.h \
- $(intermediates)/svg/JSSVGSetElement.h \
- $(intermediates)/svg/JSSVGStopElement.h \
- $(intermediates)/svg/JSSVGStringList.h \
- $(intermediates)/svg/JSSVGStyleElement.h \
- $(intermediates)/svg/JSSVGSwitchElement.h \
- $(intermediates)/svg/JSSVGSymbolElement.h \
- $(intermediates)/svg/JSSVGTRefElement.h \
- $(intermediates)/svg/JSSVGTSpanElement.h \
- $(intermediates)/svg/JSSVGTextContentElement.h \
- $(intermediates)/svg/JSSVGTextElement.h \
- $(intermediates)/svg/JSSVGTextPathElement.h \
- $(intermediates)/svg/JSSVGTextPositioningElement.h \
- $(intermediates)/svg/JSSVGTitleElement.h \
- $(intermediates)/svg/JSSVGTransform.h \
- $(intermediates)/svg/JSSVGTransformList.h \
- $(intermediates)/svg/JSSVGUnitTypes.h \
- $(intermediates)/svg/JSSVGUseElement.h \
- $(intermediates)/svg/JSSVGViewElement.h \
- $(intermediates)/svg/JSSVGVKernElement.h \
- $(intermediates)/svg/JSSVGZoomEvent.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include external/webkit/Source/WebCore/dom --include external/webkit/Source/WebCore/html --include external/webkit/Source/WebCore/svg --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/svg/JS%.h : $(LOCAL_PATH)/svg/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/svg/%.cpp : $(intermediates)/svg/%.h
-endif
-
-# Workers
-GEN := \
- $(intermediates)/workers/JSAbstractWorker.h \
- $(intermediates)/workers/JSDedicatedWorkerContext.h \
- $(intermediates)/workers/JSSharedWorker.h \
- $(intermediates)/workers/JSSharedWorkerContext.h \
- $(intermediates)/workers/JSWorker.h \
- $(intermediates)/workers/JSWorkerContext.h \
- $(intermediates)/workers/JSWorkerLocation.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/workers/JS%.h : $(LOCAL_PATH)/workers/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/workers/%.cpp : $(intermediates)/workers/%.h
-
-# XML
-GEN := \
- $(intermediates)/xml/JSDOMParser.h \
- $(intermediates)/xml/JSXMLHttpRequest.h \
- $(intermediates)/xml/JSXMLHttpRequestException.h \
- $(intermediates)/xml/JSXMLHttpRequestProgressEvent.h \
- $(intermediates)/xml/JSXMLHttpRequestUpload.h \
- $(intermediates)/xml/JSXMLSerializer.h \
- $(intermediates)/xml/JSXPathException.h \
- $(intermediates)/xml/JSXPathExpression.h \
- $(intermediates)/xml/JSXPathEvaluator.h \
- $(intermediates)/xml/JSXPathNSResolver.h \
- $(intermediates)/xml/JSXPathResult.h \
- $(intermediates)/xml/JSXSLTProcessor.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/xml/JS%.h : $(LOCAL_PATH)/xml/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/xml/%.cpp : $(intermediates)/xml/%.h
-#end
-
-# Inspector
-# These headers are required even when Inspector is disabled.
-# Note that Inspector.idl should not be processed using the JS generator.
-GEN := \
- $(intermediates)/inspector/JSScriptProfile.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/inspector/JS%.h : $(LOCAL_PATH)/inspector/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/inspector/%.cpp : $(intermediates)/inspector/%.h
-
-# WebAudio
-# These headers are required even when WebAudio is disabled
-GEN := \
- $(intermediates)/webaudio/JSAudioContext.h \
- $(intermediates)/webaudio/JSAudioPannerNode.h
-
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include dom --include html --outputdir $(dir $@) $<
-$(GEN): $(intermediates)/webaudio/JS%.h : $(LOCAL_PATH)/webaudio/%.idl $(js_binding_scripts)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
-
-# We also need the .cpp files, which are generated as side effects of the
-# above rules. Specifying this explicitly makes -j2 work.
-$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/webaudio/%.cpp : $(intermediates)/webaudio/%.h
-
-# HTML tag and attribute names
-
-GEN:= $(intermediates)/HTMLNames.cpp $(intermediates)/HTMLNames.h $(intermediates)/HTMLElementFactory.cpp $(intermediates)/HTMLElementFactory.h $(intermediates)/JSHTMLElementWrapperFactory.cpp $(intermediates)/JSHTMLElementWrapperFactory.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(PRIVATE_PATH)/html/HTMLTagNames.in --attrs $(PRIVATE_PATH)/html/HTMLAttributeNames.in --extraDefines "$(FEATURE_DEFINES)" --factory --wrapperFactory --output $(dir $@)
-$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(LOCAL_PATH)/html/HTMLTagNames.in $(LOCAL_PATH)/html/HTMLAttributeNames.in
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-# SVG tag and attribute names
-
-# Note that if SVG is not used, we still need the headers and SVGNames.cpp as
-# the HTML5 parser still requires these. The factory .cpp files are also
-# generated in this case, but since these are not needed, they are excluded
-# from GEN so that they don't get compiled.
-ifeq ($(ENABLE_SVG), true)
-GEN:= $(intermediates)/SVGNames.cpp $(intermediates)/SVGNames.h $(intermediates)/SVGElementFactory.cpp $(intermediates)/SVGElementFactory.h $(intermediates)/JSSVGElementWrapperFactory.cpp $(intermediates)/JSSVGElementWrapperFactory.h
-else
-GEN:= $(intermediates)/SVGNames.h $(intermediates)/SVGNames.cpp $(intermediates)/SVGElementFactory.h $(intermediates)/JSSVGElementWrapperFactory.h
-endif
-SVG_FLAGS:=ENABLE_SVG_ANIMATION=1 ENABLE_SVG_AS_IMAGE=1 ENABLE_SVG_FILTERS=1 ENABLE_SVG_FONTS=1 ENABLE_SVG_FOREIGN_OBJECT=1 ENABLE_SVG_USE=1
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(PRIVATE_PATH)/svg/svgtags.in --attrs $(PRIVATE_PATH)/svg/svgattrs.in --extraDefines "$(SVG_FLAGS)" --factory --wrapperFactory --output $(dir $@)
-$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(LOCAL_PATH)/svg/svgtags.in $(LOCAL_PATH)/svg/svgattrs.in
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-# MathML tag and attribute names
-
-# Note that MathML is never used but we still need the headers and
-# MathMLames.cpp as the HTML5 parser still requires these. The factory
-# .cpp files are also generated in this case, but since these are not
-# needed, they are excluded from GEN so that they don't get compiled.
-GEN:= $(intermediates)/MathMLNames.h $(intermediates)/MathMLNames.cpp $(intermediates)/MathMLElementFactory.h $(intermediates)/JSMathMLElementWrapperFactory.h
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(PRIVATE_PATH)/mathml/mathtags.in --attrs $(PRIVATE_PATH)/mathml/mathattrs.in --factory --wrapperFactory --output $(dir $@)
-$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(LOCAL_PATH)/mathml/mathtags.in $(LOCAL_PATH)/mathml/mathattrs.in
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
diff --git a/Source/WebCore/Android.jscbindings.mk b/Source/WebCore/Android.jscbindings.mk
deleted file mode 100644
index 09ea61c..0000000
--- a/Source/WebCore/Android.jscbindings.mk
+++ /dev/null
@@ -1,241 +0,0 @@
-##
-## Copyright 2009, The Android Open Source Project
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions
-## are met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in the
-## documentation and/or other materials provided with the distribution.
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
-## EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-## PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-## OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-##
-
-BINDING_C_INCLUDES := \
- $(LOCAL_PATH)/bindings/js \
- $(LOCAL_PATH)/bindings/js/specialization \
- $(LOCAL_PATH)/bridge \
- $(LOCAL_PATH)/bridge/c \
- $(LOCAL_PATH)/bridge/jni \
- $(LOCAL_PATH)/bridge/jni/jsc \
- $(LOCAL_PATH)/bridge/jsc \
- \
- $(JAVASCRIPTCORE_PATH)/API \
- $(JAVASCRIPTCORE_PATH)/assembler \
- $(JAVASCRIPTCORE_PATH)/bytecode \
- $(JAVASCRIPTCORE_PATH)/bytecompiler \
- $(JAVASCRIPTCORE_PATH)/debugger \
- $(JAVASCRIPTCORE_PATH)/parser \
- $(JAVASCRIPTCORE_PATH)/jit \
- $(JAVASCRIPTCORE_PATH)/interpreter \
- $(JAVASCRIPTCORE_PATH)/profiler \
- $(JAVASCRIPTCORE_PATH)/runtime \
- $(JAVASCRIPTCORE_PATH)/yarr \
- $(JAVASCRIPTCORE_PATH)/ForwardingHeaders \
- \
- $(WEBCORE_INTERMEDIATES_PATH)/bindings/js \
- $(WEBCORE_INTERMEDIATES_PATH)/dom \
- $(WEBCORE_INTERMEDIATES_PATH)/fileapi \
- $(WEBCORE_INTERMEDIATES_PATH)/html/canvas \
- $(WEBCORE_INTERMEDIATES_PATH)/inspector \
- $(WEBCORE_INTERMEDIATES_PATH)/loader/appcache \
- $(WEBCORE_INTERMEDIATES_PATH)/page \
- $(WEBCORE_INTERMEDIATES_PATH)/plugins \
- $(WEBCORE_INTERMEDIATES_PATH)/storage \
- $(WEBCORE_INTERMEDIATES_PATH)/svg \
- $(WEBCORE_INTERMEDIATES_PATH)/webaudio \
- $(WEBCORE_INTERMEDIATES_PATH)/workers \
- $(WEBCORE_INTERMEDIATES_PATH)/xml
-
-LOCAL_SRC_FILES += \
- bindings/js/CallbackFunction.cpp \
- bindings/js/DOMObjectHashTableMap.cpp \
- bindings/js/DOMWrapperWorld.cpp \
- bindings/js/GCController.cpp \
- bindings/js/IDBBindingUtilities.cpp \
- bindings/js/JSArrayBufferCustom.cpp \
- bindings/js/JSAttrCustom.cpp \
- bindings/js/JSAudioBufferSourceNodeCustom.cpp \
- bindings/js/JSAudioConstructor.cpp \
- bindings/js/JSCDATASectionCustom.cpp \
- bindings/js/JSCSSFontFaceRuleCustom.cpp \
- bindings/js/JSCSSImportRuleCustom.cpp \
- bindings/js/JSCSSMediaRuleCustom.cpp \
- bindings/js/JSCSSPageRuleCustom.cpp \
- bindings/js/JSCSSRuleCustom.cpp \
- bindings/js/JSCSSRuleListCustom.cpp \
- bindings/js/JSCSSStyleDeclarationCustom.cpp \
- bindings/js/JSCSSStyleRuleCustom.cpp \
- bindings/js/JSCSSValueCustom.cpp \
- bindings/js/JSCallbackData.cpp \
- bindings/js/JSCanvasRenderingContext2DCustom.cpp \
- bindings/js/JSCanvasRenderingContextCustom.cpp \
- bindings/js/JSClipboardCustom.cpp \
- bindings/js/JSConsoleCustom.cpp \
- bindings/js/JSConvolverNodeCustom.cpp \
- bindings/js/JSCoordinatesCustom.cpp \
- bindings/js/JSCustomApplicationInstalledCallback.cpp \
- bindings/js/JSCustomPositionCallback.cpp \
- bindings/js/JSCustomPositionErrorCallback.cpp \
- bindings/js/JSCustomSQLStatementErrorCallback.cpp \
- bindings/js/JSCustomVoidCallback.cpp \
- bindings/js/JSDOMApplicationCacheCustom.cpp \
- bindings/js/JSDOMBinding.cpp \
- bindings/js/JSDOMFormDataCustom.cpp \
- bindings/js/JSDOMGlobalObject.cpp \
- bindings/js/JSDOMImplementationCustom.cpp \
- bindings/js/JSDOMMimeTypeArrayCustom.cpp \
- bindings/js/JSDOMPluginArrayCustom.cpp \
- bindings/js/JSDOMPluginCustom.cpp \
- bindings/js/JSDOMStringMapCustom.cpp \
- bindings/js/JSDOMWindowBase.cpp \
- bindings/js/JSDOMWindowCustom.cpp \
- bindings/js/JSDOMWindowShell.cpp \
- bindings/js/JSDOMWrapper.cpp \
- bindings/js/JSDataGridColumnListCustom.cpp \
- bindings/js/JSDataGridDataSource.cpp \
- bindings/js/JSDataViewCustom.cpp \
- bindings/js/JSDedicatedWorkerContextCustom.cpp \
- bindings/js/JSDesktopNotificationsCustom.cpp \
- bindings/js/JSDeviceMotionEventCustom.cpp \
- bindings/js/JSDeviceOrientationEventCustom.cpp \
- bindings/js/JSDirectoryEntrySyncCustom.cpp \
- bindings/js/JSDocumentCustom.cpp \
- bindings/js/JSElementCustom.cpp \
- bindings/js/JSEntrySyncCustom.cpp \
- bindings/js/JSErrorHandler.cpp \
- bindings/js/JSEventCustom.cpp \
- bindings/js/JSEventListener.cpp \
- bindings/js/JSEventTarget.cpp \
- bindings/js/JSExceptionBase.cpp \
- bindings/js/JSFloat32ArrayCustom.cpp \
- bindings/js/JSFloat64ArrayCustom.cpp \
- bindings/js/JSFileReaderCustom.cpp \
- bindings/js/JSGeolocationCustom.cpp \
- bindings/js/JSHTMLAllCollectionCustom.cpp \
- bindings/js/JSHTMLAppletElementCustom.cpp \
- bindings/js/JSHTMLCanvasElementCustom.cpp \
- bindings/js/JSHTMLCollectionCustom.cpp \
- bindings/js/JSHTMLDataGridElementCustom.cpp \
- bindings/js/JSHTMLDocumentCustom.cpp \
- bindings/js/JSHTMLElementCustom.cpp \
- bindings/js/JSHTMLEmbedElementCustom.cpp \
- bindings/js/JSHTMLFormElementCustom.cpp \
- bindings/js/JSHTMLFrameElementCustom.cpp \
- bindings/js/JSHTMLFrameSetElementCustom.cpp \
- bindings/js/JSHTMLInputElementCustom.cpp \
- bindings/js/JSHTMLLinkElementCustom.cpp \
- bindings/js/JSHTMLObjectElementCustom.cpp \
- bindings/js/JSHTMLOptionsCollectionCustom.cpp \
- bindings/js/JSHTMLOutputElementCustom.cpp \
- bindings/js/JSHTMLSelectElementCustom.cpp \
- bindings/js/JSHTMLStyleElementCustom.cpp \
- bindings/js/JSHistoryCustom.cpp \
- bindings/js/JSIDBAnyCustom.cpp \
- bindings/js/JSIDBKeyCustom.cpp \
- bindings/js/JSImageConstructor.cpp \
- bindings/js/JSImageDataCustom.cpp \
- bindings/js/JSInt16ArrayCustom.cpp \
- bindings/js/JSInt32ArrayCustom.cpp \
- bindings/js/JSInt8ArrayCustom.cpp \
- bindings/js/JSJavaScriptAudioNodeCustom.cpp \
- bindings/js/JSLazyEventListener.cpp \
- bindings/js/JSLocationCustom.cpp \
- bindings/js/JSMainThreadExecState.cpp \
- bindings/js/JSMemoryInfoCustom.cpp \
- bindings/js/JSMessageChannelCustom.cpp \
- bindings/js/JSMessageEventCustom.cpp \
- bindings/js/JSMessagePortCustom.cpp \
- bindings/js/JSNamedNodeMapCustom.cpp \
- bindings/js/JSNavigatorCustom.cpp \
- bindings/js/JSNodeCustom.cpp \
- bindings/js/JSNodeFilterCondition.cpp \
- bindings/js/JSNodeFilterCustom.cpp \
- bindings/js/JSNodeIteratorCustom.cpp \
- bindings/js/JSNodeListCustom.cpp \
- bindings/js/JSOptionConstructor.cpp \
- bindings/js/JSPluginElementFunctions.cpp \
- bindings/js/JSProcessingInstructionCustom.cpp \
- bindings/js/JSSQLResultSetRowListCustom.cpp \
- bindings/js/JSSQLTransactionCustom.cpp \
- bindings/js/JSSQLTransactionSyncCustom.cpp \
- bindings/js/JSSVGElementInstanceCustom.cpp \
- bindings/js/JSSVGLengthCustom.cpp \
- bindings/js/JSSVGPathSegCustom.cpp \
- bindings/js/JSSharedWorkerCustom.cpp \
- bindings/js/JSStorageCustom.cpp \
- bindings/js/JSStyleSheetCustom.cpp \
- bindings/js/JSStyleSheetListCustom.cpp \
- bindings/js/JSTextCustom.cpp \
- bindings/js/JSTouchCustom.cpp \
- bindings/js/JSTouchListCustom.cpp \
- bindings/js/JSTreeWalkerCustom.cpp \
- bindings/js/JSUint16ArrayCustom.cpp \
- bindings/js/JSUint32ArrayCustom.cpp \
- bindings/js/JSUint8ArrayCustom.cpp \
- bindings/js/JSWebKitAnimationCustom.cpp \
- bindings/js/JSWebKitAnimationListCustom.cpp \
- bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp \
- bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp \
- bindings/js/JSWebKitCSSMatrixCustom.cpp \
- bindings/js/JSWebKitPointCustom.cpp \
- bindings/js/JSWorkerContextBase.cpp \
- bindings/js/JSWorkerContextCustom.cpp \
- bindings/js/JSWorkerCustom.cpp \
- bindings/js/JSXMLHttpRequestCustom.cpp \
- bindings/js/JSXMLHttpRequestUploadCustom.cpp \
- bindings/js/JSXSLTProcessorCustom.cpp \
- bindings/js/ScheduledAction.cpp \
- bindings/js/ScriptCachedFrameData.cpp \
- bindings/js/ScriptCallStackFactory.cpp \
- bindings/js/ScriptController.cpp \
- bindings/js/ScriptControllerAndroid.cpp \
- bindings/js/ScriptEventListener.cpp \
- bindings/js/ScriptFunctionCall.cpp \
- bindings/js/ScriptObject.cpp \
- bindings/js/ScriptProfile.cpp \
- bindings/js/ScriptState.cpp \
- bindings/js/ScriptValue.cpp \
- bindings/js/SerializedScriptValue.cpp \
- bindings/js/WorkerScriptController.cpp \
- \
- bindings/ScriptControllerBase.cpp \
- \
- bridge/IdentifierRep.cpp \
- bridge/NP_jsobject.cpp \
- bridge/c/CRuntimeObject.cpp \
- bridge/c/c_class.cpp \
- bridge/c/c_instance.cpp \
- bridge/c/c_runtime.cpp \
- bridge/c/c_utility.cpp \
- bridge/jni/JNIUtility.cpp \
- bridge/jni/JavaMethodJobject.cpp \
- bridge/jni/JobjectWrapper.cpp \
- bridge/jni/jsc/JNIUtilityPrivate.cpp \
- bridge/jni/jsc/JavaArrayJSC.cpp \
- bridge/jni/jsc/JavaClassJSC.cpp \
- bridge/jni/jsc/JavaFieldJSC.cpp \
- bridge/jni/jsc/JavaInstanceJSC.cpp \
- bridge/jni/jsc/JavaRuntimeObject.cpp \
- bridge/jsc/BridgeJSC.cpp \
- bridge/npruntime.cpp \
- bridge/runtime_array.cpp \
- bridge/runtime_method.cpp \
- bridge/runtime_object.cpp \
- bridge/runtime_root.cpp
-
-# For XPath.
-LOCAL_SRC_FILES += \
- bindings/js/JSCustomXPathNSResolver.cpp
diff --git a/Source/WebCore/Android.mk b/Source/WebCore/Android.mk
index bdf6410..d6c899e 100644
--- a/Source/WebCore/Android.mk
+++ b/Source/WebCore/Android.mk
@@ -124,6 +124,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
dom/DOMImplementation.cpp \
dom/DOMStringList.cpp \
dom/DOMStringMap.cpp \
+ dom/DOMTextContentWalker.cpp \
dom/DatasetDOMStringMap.cpp \
dom/DecodedDataDocumentParser.cpp \
dom/DeviceMotionController.cpp \
diff --git a/Source/WebCore/bridge/jni/JavaMethodJobject.cpp b/Source/WebCore/bridge/jni/JavaMethodJobject.cpp
index 01a0b5b..f93e197 100644
--- a/Source/WebCore/bridge/jni/JavaMethodJobject.cpp
+++ b/Source/WebCore/bridge/jni/JavaMethodJobject.cpp
@@ -131,9 +131,9 @@ const char* JavaMethodJobject::signature() const
else {
signatureBuilder.append(signatureFromJavaType(type));
if (type == JavaTypeObject
-#if USE(V8)
+// ANDROID
|| type == JavaTypeString
-#endif
+// ANDROID
) {
appendClassName(signatureBuilder, javaClassName.data());
signatureBuilder.append(';');
@@ -148,9 +148,9 @@ const char* JavaMethodJobject::signature() const
else {
signatureBuilder.append(signatureFromJavaType(m_returnType));
if (m_returnType == JavaTypeObject
-#if USE(V8)
+// ANDROID
|| m_returnType == JavaTypeString
-#endif
+// ANDROID
) {
appendClassName(signatureBuilder, returnType);
signatureBuilder.append(';');
diff --git a/Source/WebCore/dom/DOMTextContentWalker.cpp b/Source/WebCore/dom/DOMTextContentWalker.cpp
new file mode 100644
index 0000000..ccbe1ec
--- /dev/null
+++ b/Source/WebCore/dom/DOMTextContentWalker.cpp
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 "DOMTextContentWalker.h"
+
+#if OS(ANDROID)
+
+#include "Range.h"
+#include "TextIterator.h"
+#include "VisiblePosition.h"
+#include "VisibleSelection.h"
+#include "visible_units.h"
+
+namespace WebCore {
+
+static PassRefPtr<Range> getRange(const Position& start, const Position& end)
+{
+ return VisibleSelection(start.parentAnchoredEquivalent(), end.parentAnchoredEquivalent(), DOWNSTREAM).firstRange();
+}
+
+DOMTextContentWalker::DOMTextContentWalker(const VisiblePosition& position, unsigned maxLength)
+ : m_hitOffsetInContent(0)
+{
+ const unsigned halfMaxLength = maxLength / 2;
+ CharacterIterator forwardChar(makeRange(position, endOfDocument(position)).get(), TextIteratorStopsOnFormControls);
+ forwardChar.advance(maxLength - halfMaxLength);
+
+ // No forward contents, started inside form control.
+ RefPtr<Range> range = getRange(position.deepEquivalent(), forwardChar.range()->startPosition());
+ if (!range.get() || range->text().length() == 0)
+ return;
+
+ BackwardsCharacterIterator backwardsChar(makeRange(startOfDocument(position), position).get(), TextIteratorStopsOnFormControls);
+ backwardsChar.advance(halfMaxLength);
+
+ m_hitOffsetInContent = getRange(backwardsChar.range()->endPosition(), position.deepEquivalent())->text().length();
+ m_contentRange = getRange(backwardsChar.range()->endPosition(), forwardChar.range()->startPosition());
+}
+
+PassRefPtr<Range> DOMTextContentWalker::contentOffsetsToRange(unsigned startInContent, unsigned endInContent)
+{
+ if (startInContent >= endInContent || endInContent > content().length())
+ return 0;
+
+ CharacterIterator iterator(m_contentRange.get());
+ iterator.advance(startInContent);
+
+ Position start = iterator.range()->startPosition();
+ iterator.advance(endInContent - startInContent);
+ Position end = iterator.range()->startPosition();
+ return getRange(start, end);
+}
+
+String DOMTextContentWalker::content() const
+{
+ if (m_contentRange)
+ return m_contentRange->text();
+ return String();
+}
+
+unsigned DOMTextContentWalker::hitOffsetInContent() const
+{
+ return m_hitOffsetInContent;
+}
+
+} // namespace WebCore
+
+#endif // OS(ANDROID)
diff --git a/Source/WebCore/dom/DOMTextContentWalker.h b/Source/WebCore/dom/DOMTextContentWalker.h
new file mode 100644
index 0000000..0d4259b
--- /dev/null
+++ b/Source/WebCore/dom/DOMTextContentWalker.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 DOMTextContentWalker_h
+#define DOMTextContentWalker_h
+
+#if OS(ANDROID)
+
+#include "PlatformString.h"
+
+namespace WebCore {
+
+class Range;
+class VisiblePosition;
+
+// Explore the DOM tree to find the text contents up to a limit
+// around a position in a given text node.
+class DOMTextContentWalker {
+ WTF_MAKE_NONCOPYABLE(DOMTextContentWalker);
+public:
+ DOMTextContentWalker(const VisiblePosition& position, unsigned maxLength);
+
+ String content() const;
+ unsigned hitOffsetInContent() const;
+
+ // Convert start/end positions in the content text string into a text range.
+ PassRefPtr<Range> contentOffsetsToRange(unsigned startInContent, unsigned endInContent);
+
+private:
+ RefPtr<Range> m_contentRange;
+ size_t m_hitOffsetInContent;
+};
+
+} // namespace WebCore
+
+#endif // OS(ANDROID)
+
+#endif // DOMTextContentWalker_h
+
diff --git a/Source/WebCore/editing/SelectionController.cpp b/Source/WebCore/editing/SelectionController.cpp
index e9bdd6a..acae6bf 100644
--- a/Source/WebCore/editing/SelectionController.cpp
+++ b/Source/WebCore/editing/SelectionController.cpp
@@ -1217,10 +1217,6 @@ void SelectionController::invalidateCaretRect()
void SelectionController::paintCaret(GraphicsContext* context, int tx, int ty, const IntRect& clipRect)
{
-#ifdef ANDROID_ALLOW_TURNING_OFF_CARET
- if (m_frame && !android::WebViewCore::getWebViewCore(m_frame->view())->shouldPaintCaret())
- return;
-#endif
#if ENABLE(TEXT_CARET)
if (!m_caretVisible)
return;
diff --git a/Source/WebCore/editing/TextIterator.cpp b/Source/WebCore/editing/TextIterator.cpp
index c3be277..3aa68af 100644
--- a/Source/WebCore/editing/TextIterator.cpp
+++ b/Source/WebCore/editing/TextIterator.cpp
@@ -239,6 +239,20 @@ static void setUpFullyClippedStack(BitStack& stack, Node* node)
ASSERT(stack.size() == 1 + depthCrossingShadowBoundaries(node));
}
+#if OS(ANDROID)
+static bool checkFormControlElement(Node* startNode)
+{
+ Node* node = startNode;
+ while (node) {
+ if (node->isElementNode() && static_cast<Element*>(node)->isFormControlElement())
+ return true;
+ node = node->parentNode();
+ }
+ return false;
+}
+#endif
+
+
// --------
TextIterator::TextIterator()
@@ -258,6 +272,10 @@ TextIterator::TextIterator()
, m_handledFirstLetter(false)
, m_ignoresStyleVisibility(false)
, m_emitsObjectReplacementCharacters(false)
+#if OS(ANDROID)
+ , m_stopsOnFormControls(false)
+ , m_shouldStop(false)
+#endif
{
}
@@ -277,6 +295,10 @@ TextIterator::TextIterator(const Range* r, TextIteratorBehavior behavior)
, m_handledFirstLetter(false)
, m_ignoresStyleVisibility(behavior & TextIteratorIgnoresStyleVisibility)
, m_emitsObjectReplacementCharacters(behavior & TextIteratorEmitsObjectReplacementCharacters)
+#if OS(ANDROID)
+ , m_stopsOnFormControls(behavior & TextIteratorStopsOnFormControls)
+ , m_shouldStop(false)
+#endif
{
if (!r)
return;
@@ -334,8 +356,21 @@ TextIterator::~TextIterator()
{
}
+bool TextIterator::atEnd() const
+{
+#if OS(ANDROID)
+ return !m_positionNode || m_shouldStop;
+#else
+ return !m_positionNode;
+#endif
+}
+
void TextIterator::advance()
{
+#if OS(ANDROID)
+ if (m_shouldStop)
+ return;
+#endif
// reset the run information
m_positionNode = 0;
m_textLength = 0;
@@ -368,6 +403,10 @@ void TextIterator::advance()
}
while (m_node && m_node != m_pastEndNode) {
+#if OS(ANDROID)
+ if (!m_shouldStop && m_stopsOnFormControls && checkFormControlElement(m_node))
+ m_shouldStop = true;
+#endif
// if the range ends at offset 0 of an element, represent the
// position, but not the content, of that element e.g. if the
// node is a blockflow element, emit a newline that
@@ -1034,6 +1073,10 @@ SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator()
: m_behavior(TextIteratorDefaultBehavior)
, m_node(0)
, m_positionNode(0)
+#if OS(ANDROID)
+ , m_stopsOnFormControls(false)
+ , m_shouldStop(false)
+#endif
{
}
@@ -1041,8 +1084,16 @@ SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator(const Range* r,
: m_behavior(behavior)
, m_node(0)
, m_positionNode(0)
+#if OS(ANDROID)
+ , m_stopsOnFormControls(behavior & TextIteratorStopsOnFormControls)
+ , m_shouldStop(false)
+#endif
{
+#if OS(ANDROID)
+ ASSERT(m_behavior == TextIteratorDefaultBehavior || m_behavior == TextIteratorStopsOnFormControls);
+#else
ASSERT(m_behavior == TextIteratorDefaultBehavior);
+#endif
if (!r)
return;
@@ -1091,10 +1142,30 @@ SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator(const Range* r,
advance();
}
+bool SimplifiedBackwardsTextIterator::atEnd() const
+{
+#if OS(ANDROID)
+ return !m_positionNode || m_shouldStop;
+#else
+ return !m_positionNode;
+#endif
+}
+
void SimplifiedBackwardsTextIterator::advance()
{
ASSERT(m_positionNode);
+#if OS(ANDROID)
+ if (m_shouldStop)
+ return;
+
+ // Prevent changing the iterator position if a form control element was found and advance should stop on it.
+ if (m_stopsOnFormControls && checkFormControlElement(m_node)) {
+ m_shouldStop = true;
+ return;
+ }
+#endif
+
m_positionNode = 0;
m_textLength = 0;
diff --git a/Source/WebCore/editing/TextIterator.h b/Source/WebCore/editing/TextIterator.h
index 9fe4ceb..c4fc264 100644
--- a/Source/WebCore/editing/TextIterator.h
+++ b/Source/WebCore/editing/TextIterator.h
@@ -42,7 +42,10 @@ enum TextIteratorBehavior {
TextIteratorEntersTextControls = 1 << 1,
TextIteratorEmitsTextsWithoutTranscoding = 1 << 2,
TextIteratorIgnoresStyleVisibility = 1 << 3,
- TextIteratorEmitsObjectReplacementCharacters = 1 << 4
+ TextIteratorEmitsObjectReplacementCharacters = 1 << 4,
+#if OS(ANDROID)
+ TextIteratorStopsOnFormControls = 1 << 6
+#endif
};
// FIXME: Can't really answer this question correctly without knowing the white-space mode.
@@ -88,7 +91,7 @@ public:
~TextIterator();
explicit TextIterator(const Range*, TextIteratorBehavior = TextIteratorDefaultBehavior);
- bool atEnd() const { return !m_positionNode; }
+ bool atEnd() const;
void advance();
int length() const { return m_textLength; }
@@ -182,6 +185,12 @@ private:
bool m_ignoresStyleVisibility;
// Used when emitting the special 0xFFFC character is required.
bool m_emitsObjectReplacementCharacters;
+#if OS(ANDROID)
+ // Used when the iteration should stop if form controls are reached.
+ bool m_stopsOnFormControls;
+ // Used when m_stopsOnFormControls is set to determine if the iterator should keep advancing.
+ bool m_shouldStop;
+#endif
};
// Iterates through the DOM range, returning all the text, and 0-length boundaries
@@ -192,7 +201,7 @@ public:
SimplifiedBackwardsTextIterator();
explicit SimplifiedBackwardsTextIterator(const Range*, TextIteratorBehavior = TextIteratorDefaultBehavior);
- bool atEnd() const { return !m_positionNode; }
+ bool atEnd() const;
void advance();
int length() const { return m_textLength; }
@@ -240,6 +249,13 @@ private:
// Whether m_node has advanced beyond the iteration range (i.e. m_startNode).
bool m_havePassedStartNode;
+
+#if OS(ANDROID)
+ // Used when the iteration should stop if form controls are reached.
+ bool m_stopsOnFormControls;
+ // Used when m_stopsOnFormControls is set to determine if the iterator should keep advancing.
+ bool m_shouldStop;
+#endif
};
// Builds on the text iterator, adding a character position so we can walk one
diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp
index 60f5b4a..4636f20 100644
--- a/Source/WebCore/html/HTMLAnchorElement.cpp
+++ b/Source/WebCore/html/HTMLAnchorElement.cpp
@@ -531,7 +531,11 @@ bool HTMLAnchorElement::treatLinkAsLiveForEventType(EventType eventType) const
bool isEnterKeyKeydownEvent(Event* event)
{
+#if OS(ANDROID)
+ return event->type() == eventNames().keyupEvent && event->isKeyboardEvent() && static_cast<KeyboardEvent*>(event)->keyIdentifier() == "Enter";
+#else
return event->type() == eventNames().keydownEvent && event->isKeyboardEvent() && static_cast<KeyboardEvent*>(event)->keyIdentifier() == "Enter";
+#endif
}
bool isMiddleMouseButtonEvent(Event* event)
diff --git a/Source/WebCore/platform/android/KeyEventAndroid.cpp b/Source/WebCore/platform/android/KeyEventAndroid.cpp
index eaf34a9..dd1f37d 100644
--- a/Source/WebCore/platform/android/KeyEventAndroid.cpp
+++ b/Source/WebCore/platform/android/KeyEventAndroid.cpp
@@ -33,7 +33,7 @@
#include "NotImplemented.h"
#include "WindowsKeyboardCodes.h"
-#include <ui/KeycodeLabels.h>
+#include <androidfw/KeycodeLabels.h>
namespace WebCore {
@@ -191,7 +191,7 @@ static String keyIdentifierForAndroidKeyCode(int keyCode)
return "U+00007F";
default:
char upper[16];
- sprintf(upper, "U+%06X", windowsKeyCodeForKeyEvent(keyCode));
+ sprintf(upper, "U+%04X", windowsKeyCodeForKeyEvent(keyCode));
return String(upper);
}
}
diff --git a/Source/WebCore/platform/android/RenderThemeAndroid.cpp b/Source/WebCore/platform/android/RenderThemeAndroid.cpp
index d579003..ee406c2 100644
--- a/Source/WebCore/platform/android/RenderThemeAndroid.cpp
+++ b/Source/WebCore/platform/android/RenderThemeAndroid.cpp
@@ -181,6 +181,16 @@ Color RenderThemeAndroid::platformInactiveListBoxSelectionForegroundColor() cons
return Color(Color::transparent);
}
+Color RenderThemeAndroid::platformActiveTextSearchHighlightColor() const
+{
+ return Color(0x00, 0x99, 0xcc, 0x99); // HOLO_DARK
+}
+
+Color RenderThemeAndroid::platformInactiveTextSearchHighlightColor() const
+{
+ return Color(0x33, 0xb5, 0xe5, 0x66); // HOLO_LIGHT
+}
+
int RenderThemeAndroid::baselinePosition(const RenderObject* obj) const
{
// From the description of this function in RenderTheme.h:
@@ -621,21 +631,18 @@ bool RenderThemeAndroid::paintMenuListButton(RenderObject* obj, const PaintInfo&
return paintCombo(obj, info, rect);
}
+Color RenderThemeAndroid::platformFocusRingColor() const
+{
+ static Color focusRingColor(0x33, 0xB5, 0xE5, 0x66);
+ return focusRingColor;
+}
+
bool RenderThemeAndroid::supportsFocusRing(const RenderStyle* style) const
{
- return style->opacity() > 0
- && style->hasAppearance()
- && style->appearance() != TextFieldPart
- && style->appearance() != SearchFieldPart
- && style->appearance() != TextAreaPart
- && style->appearance() != CheckboxPart
- && style->appearance() != RadioPart
- && style->appearance() != PushButtonPart
- && style->appearance() != SquareButtonPart
- && style->appearance() != ButtonPart
- && style->appearance() != ButtonBevelPart
- && style->appearance() != MenulistPart
- && style->appearance() != MenulistButtonPart;
+ // Draw the focus ring ourselves unless it is a text area (webkit does borders better)
+ if (!style || !style->hasAppearance())
+ return true;
+ return style->appearance() != TextFieldPart && style->appearance() != TextAreaPart;
}
} // namespace WebCore
diff --git a/Source/WebCore/platform/android/RenderThemeAndroid.h b/Source/WebCore/platform/android/RenderThemeAndroid.h
index 89a6d46..ed4d07f 100644
--- a/Source/WebCore/platform/android/RenderThemeAndroid.h
+++ b/Source/WebCore/platform/android/RenderThemeAndroid.h
@@ -48,7 +48,7 @@ public:
~RenderThemeAndroid();
virtual bool stateChanged(RenderObject*, ControlState) const;
-
+
virtual bool supportsFocusRing(const RenderStyle*) const;
// A method asking if the theme's controls actually care about redrawing when hovered.
virtual bool supportsHover(const RenderStyle* style) const { return style->affectedByHoverRules(); }
@@ -60,12 +60,16 @@ public:
virtual Color platformActiveSelectionForegroundColor() const;
virtual Color platformInactiveSelectionForegroundColor() const;
virtual Color platformTextSearchHighlightColor() const;
+ virtual Color platformFocusRingColor() const;
virtual Color platformActiveListBoxSelectionBackgroundColor() const;
virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
virtual Color platformActiveListBoxSelectionForegroundColor() const;
virtual Color platformInactiveListBoxSelectionForegroundColor() const;
+ virtual Color platformActiveTextSearchHighlightColor() const;
+ virtual Color platformInactiveTextSearchHighlightColor() const;
+
virtual void systemFont(int, WebCore::FontDescription&) const {}
virtual int minimumMenuListSize(RenderStyle*) const { return 0; }
diff --git a/Source/WebCore/platform/android/TemporaryLinkStubs.cpp b/Source/WebCore/platform/android/TemporaryLinkStubs.cpp
index ca9f24d..7df3e8c 100644
--- a/Source/WebCore/platform/android/TemporaryLinkStubs.cpp
+++ b/Source/WebCore/platform/android/TemporaryLinkStubs.cpp
@@ -80,13 +80,6 @@
#include <wtf/MainThread.h>
#include <wtf/text/CString.h>
-#if USE(JSC)
-#include "API/JSClassRef.h"
-#include "JNIUtilityPrivate.h"
-#include "JavaScriptCallFrame.h"
-#include "ScriptDebugServer.h"
-#endif
-
using namespace WebCore;
/********************************************************/
@@ -394,18 +387,6 @@ PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String&)
}
-#if USE(JSC)
-namespace JSC { namespace Bindings {
-bool dispatchJNICall(ExecState*, const void* targetAppletView, jobject obj, bool isStatic, JavaType returnType,
- jmethodID methodID, jvalue* args, jvalue& result, const char* callingURL, JSValue& exceptionDescription)
-{
- notImplemented();
- return false;
-}
-
-} } // namespace Bindings
-#endif
-
char* dirname(const char*)
{
notImplemented();
diff --git a/Source/WebCore/platform/graphics/GraphicsContext.cpp b/Source/WebCore/platform/graphics/GraphicsContext.cpp
index 65cc6df..e032714 100644
--- a/Source/WebCore/platform/graphics/GraphicsContext.cpp
+++ b/Source/WebCore/platform/graphics/GraphicsContext.cpp
@@ -432,6 +432,7 @@ void GraphicsContext::drawBidiText(const Font& font, const TextRun& run, const F
bidiRuns.deleteRuns();
}
+#if !PLATFORM(ANDROID)
void GraphicsContext::drawHighlightForText(const Font& font, const TextRun& run, const FloatPoint& point, int h, const Color& backgroundColor, ColorSpace colorSpace, int from, int to)
{
if (paintingDisabled())
@@ -439,6 +440,7 @@ void GraphicsContext::drawHighlightForText(const Font& font, const TextRun& run,
fillRect(font.selectionRectForText(run, point, h, from, to), backgroundColor, colorSpace);
}
+#endif
void GraphicsContext::drawImage(Image* image, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op, bool useLowQualityScale)
{
diff --git a/Source/WebCore/platform/graphics/GraphicsContext.h b/Source/WebCore/platform/graphics/GraphicsContext.h
index 2b41c2e..ed43cf0 100644
--- a/Source/WebCore/platform/graphics/GraphicsContext.h
+++ b/Source/WebCore/platform/graphics/GraphicsContext.h
@@ -382,7 +382,11 @@ namespace WebCore {
void drawText(const Font&, const TextRun&, const FloatPoint&, int from = 0, int to = -1);
void drawEmphasisMarks(const Font&, const TextRun& , const AtomicString& mark, const FloatPoint&, int from = 0, int to = -1);
void drawBidiText(const Font&, const TextRun&, const FloatPoint&);
+#if PLATFORM(ANDROID)
+ void drawHighlightForText(const Font&, const TextRun&, const FloatPoint&, int h, const Color& backgroundColor, ColorSpace, int from = 0, int to = -1, bool isActive = true);
+#else
void drawHighlightForText(const Font&, const TextRun&, const FloatPoint&, int h, const Color& backgroundColor, ColorSpace, int from = 0, int to = -1);
+#endif
enum RoundingMode {
RoundAllSides,
diff --git a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
index a3c92cd..524f986 100644
--- a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
@@ -320,6 +320,8 @@ void BaseLayerAndroid::drawBasePictureInGL()
void BaseLayerAndroid::updateLayerPositions(SkRect& visibleRect)
{
LayerAndroid* compositedRoot = static_cast<LayerAndroid*>(getChild(0));
+ if (!compositedRoot)
+ return;
TransformationMatrix ident;
compositedRoot->updateFixedLayersPositions(visibleRect);
FloatRect clip(0, 0, content()->width(), content()->height());
diff --git a/Source/WebCore/platform/graphics/android/GLExtras.cpp b/Source/WebCore/platform/graphics/android/GLExtras.cpp
index b872951..8a1d2fa 100644
--- a/Source/WebCore/platform/graphics/android/GLExtras.cpp
+++ b/Source/WebCore/platform/graphics/android/GLExtras.cpp
@@ -26,7 +26,6 @@
#include "config.h"
#include "DrawExtra.h"
-#include "FindCanvas.h"
#include "GLExtras.h"
#include "IntRect.h"
#include "TilesManager.h"
@@ -58,8 +57,7 @@
#define MAX_NUMBER_OF_MATCHES_TO_DRAW 101
GLExtras::GLExtras()
- : m_findOnPage(0)
- , m_ring(0)
+ : m_ring(0)
, m_drawExtra(0)
, m_viewport()
{
@@ -170,58 +168,11 @@ void GLExtras::drawCursorRings(const LayerAndroid* layer)
layer ? layer->drawTransform() : 0);
}
-void GLExtras::drawFindOnPage(const LayerAndroid* layer)
-{
- WTF::Vector<MatchInfo>* matches = m_findOnPage->matches();
- XLOG("drawFindOnPage, matches: %p", matches);
- if (!matches || !m_findOnPage->isCurrentLocationValid())
- return;
- std::pair<unsigned, unsigned> matchRange =
- m_findOnPage->getLayerMatchRange(layer ? layer->uniqueId() : -1);
- if (matchRange.first >= matchRange.second)
- return;
-
- int count = matches->size();
- unsigned current = m_findOnPage->currentMatchIndex();
- XLOG("match count: %d", count);
- const TransformationMatrix* drawTransform =
- layer ? layer->drawTransform() : 0;
- if (count < MAX_NUMBER_OF_MATCHES_TO_DRAW)
- for (unsigned i = matchRange.first; i < matchRange.second; i++) {
- MatchInfo& info = matches->at(i);
- const SkRegion& region = info.getLocation();
- SkIRect rect = region.getBounds();
- if (drawTransform) {
- IntRect intRect(rect.fLeft, rect.fTop, rect.width(),
- rect.height());
- IntRect transformedRect = drawTransform->mapRect(intRect);
- rect.setXYWH(transformedRect.x(), transformedRect.y(),
- transformedRect.width(), transformedRect.height());
- }
- if (rect.intersect(m_viewport.fLeft, m_viewport.fTop,
- m_viewport.fRight, m_viewport.fBottom))
- drawRegion(region, i == current, false, drawTransform, COLOR_HOLO_DARK);
-#ifdef DEBUG
- else
- XLOG("Quick rejecting [%dx%d, %d, %d", rect.fLeft, rect.fTop,
- rect.width(), rect.height());
-#endif // DEBUG
- }
- else {
- if (matchRange.first <= current && current < matchRange.second) {
- MatchInfo& info = matches->at(current);
- drawRegion(info.getLocation(), true, false, drawTransform, COLOR_HOLO_DARK);
- }
- }
-}
-
void GLExtras::drawGL(const LayerAndroid* layer)
{
if (m_drawExtra) {
if (m_drawExtra == m_ring)
drawCursorRings(layer);
- else if (m_drawExtra == m_findOnPage)
- drawFindOnPage(layer);
else
m_drawExtra->drawGL(this, layer);
}
diff --git a/Source/WebCore/platform/graphics/android/GLExtras.h b/Source/WebCore/platform/graphics/android/GLExtras.h
index 51ad8d8..72ee41c 100644
--- a/Source/WebCore/platform/graphics/android/GLExtras.h
+++ b/Source/WebCore/platform/graphics/android/GLExtras.h
@@ -32,7 +32,6 @@
#include "SkRegion.h"
namespace android {
- class FindOnPage;
class CursorRing;
}
@@ -47,9 +46,6 @@ public:
virtual ~GLExtras();
void drawGL(const LayerAndroid* layer);
- void setFindOnPageExtra(android::FindOnPage* findOnPage) {
- m_findOnPage = findOnPage;
- }
void setCursorRingExtra(android::CursorRing* ring) { m_ring = ring; }
void setDrawExtra(android::DrawExtra* extra) { m_drawExtra = extra; }
void setViewport(const SkRect & viewport) { m_viewport = viewport; }
@@ -60,9 +56,7 @@ public:
private:
void drawRing(SkRect& srcRect, Color color, const TransformationMatrix* drawMat);
void drawCursorRings(const LayerAndroid* layer);
- void drawFindOnPage(const LayerAndroid* layer);
- android::FindOnPage* m_findOnPage;
android::CursorRing* m_ring;
android::DrawExtra* m_drawExtra;
SkRect m_viewport;
diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
index c96f5ea..e0d48ee 100644
--- a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
+++ b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
@@ -243,7 +243,7 @@ int GLWebViewState::baseContentHeight()
return m_treeManager.baseContentHeight();
}
-void GLWebViewState::setViewport(SkRect& viewport, float scale)
+void GLWebViewState::setViewport(const SkRect& viewport, float scale)
{
// allocate max possible number of tiles visible with this viewport / expandedTileBounds
const float invTileContentWidth = scale / TilesManager::tileWidth();
@@ -343,9 +343,9 @@ void GLWebViewState::drawBackground(Color& backgroundColor)
glClear(GL_COLOR_BUFFER_BIT);
}
-double GLWebViewState::setupDrawing(IntRect& viewRect, SkRect& visibleRect,
- IntRect& webViewRect, int titleBarHeight,
- IntRect& screenClip, float scale)
+double GLWebViewState::setupDrawing(const IntRect& viewRect, const SkRect& visibleRect,
+ const IntRect& webViewRect, int titleBarHeight,
+ const IntRect& screenClip, float scale)
{
int left = viewRect.x();
int top = viewRect.y();
@@ -364,13 +364,8 @@ double GLWebViewState::setupDrawing(IntRect& viewRect, SkRect& visibleRect,
TilesManager::tileHeight());
}
- shader->setViewport(visibleRect, scale);
- shader->setViewRect(viewRect);
- shader->setWebViewRect(webViewRect);
- shader->setTitleBarHeight(titleBarHeight);
- shader->setScreenClip(screenClip);
- shader->resetBlending();
-
+ shader->setupDrawing(viewRect, visibleRect, webViewRect,
+ titleBarHeight, screenClip, scale);
shader->calculateAnimationDelta();
glViewport(left + shader->getAnimationDeltaX(),
@@ -468,23 +463,24 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
IntRect& clip, float scale,
bool* treesSwappedPtr, bool* newTreeHasAnimPtr)
{
+ TilesManager* tilesManager = TilesManager::instance();
m_scale = scale;
- TilesManager::instance()->getProfiler()->nextFrame(viewport.fLeft,
+ tilesManager->getProfiler()->nextFrame(viewport.fLeft,
viewport.fTop,
viewport.fRight,
viewport.fBottom,
scale);
- TilesManager::instance()->incDrawGLCount();
+ tilesManager->incDrawGLCount();
#ifdef DEBUG
- TilesManager::instance()->getTilesTracker()->clear();
+ tilesManager->getTilesTracker()->clear();
#endif
float viewWidth = (viewport.fRight - viewport.fLeft) * TILE_PREFETCH_RATIO;
float viewHeight = (viewport.fBottom - viewport.fTop) * TILE_PREFETCH_RATIO;
- bool useMinimalMemory = TilesManager::instance()->useMinimalMemory();
- bool useHorzPrefetch = useMinimalMemory ? 0 : viewWidth < baseContentWidth();
- bool useVertPrefetch = useMinimalMemory ? 0 : viewHeight < baseContentHeight();
+ bool noPrefetch = tilesManager->useMinimalMemory() || !tilesManager->highEndGfx();
+ bool useHorzPrefetch = noPrefetch ? 0 : viewWidth < baseContentWidth();
+ bool useVertPrefetch = noPrefetch ? 0 : viewHeight < baseContentHeight();
m_expandedTileBoundsX = (useHorzPrefetch) ? TILE_PREFETCH_DISTANCE : 0;
m_expandedTileBoundsY = (useVertPrefetch) ? TILE_PREFETCH_DISTANCE : 0;
@@ -503,7 +499,7 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
// Here before we draw, update the BaseTile which has updated content.
// Inside this function, just do GPU blits from the transfer queue into
// the BaseTiles' texture.
- TilesManager::instance()->transferQueue()->updateDirtyBaseTiles();
+ tilesManager->transferQueue()->updateDirtyBaseTiles();
// Upload any pending ImageTexture
// Return true if we still have some images to upload.
@@ -516,7 +512,7 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
}
// gather the textures we can use
- TilesManager::instance()->gatherLayerTextures();
+ tilesManager->gatherLayerTextures();
double currentTime = setupDrawing(rect, viewport, webViewRect, titleBarHeight, clip, scale);
@@ -543,8 +539,8 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
glBindBuffer(GL_ARRAY_BUFFER, 0);
// Clean up GL textures for video layer.
- TilesManager::instance()->videoLayerManager()->deleteUnusedTextures();
- ret |= TilesManager::instance()->invertedScreenSwitch();
+ tilesManager->videoLayerManager()->deleteUnusedTextures();
+ ret |= tilesManager->invertedScreenSwitch();
if (ret) {
// ret==true && empty inval region means we've inval'd everything,
@@ -552,13 +548,13 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
// until tile generation catches up and we swap pages.
bool fullScreenInval = m_frameworkInval.isEmpty();
- if (TilesManager::instance()->invertedScreenSwitch()) {
+ if (tilesManager->invertedScreenSwitch()) {
fullScreenInval = true;
- TilesManager::instance()->setInvertedScreenSwitch(false);
+ tilesManager->setInvertedScreenSwitch(false);
}
if (!fullScreenInval) {
- FloatRect frameworkInval = TilesManager::instance()->shader()->rectInInvScreenCoord(
+ FloatRect frameworkInval = tilesManager->shader()->rectInInvScreenCoord(
m_frameworkInval);
// Inflate the invalidate rect to avoid precision lost.
frameworkInval.inflate(1);
@@ -594,7 +590,7 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect,
showFrameInfo(rect, *treesSwappedPtr);
#ifdef DEBUG
- TilesManager::instance()->getTilesTracker()->showTrackTextures();
+ tilesManager->getTilesTracker()->showTrackTextures();
#endif
return ret;
diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.h b/Source/WebCore/platform/graphics/android/GLWebViewState.h
index cc0c56b..334cd8e 100644
--- a/Source/WebCore/platform/graphics/android/GLWebViewState.h
+++ b/Source/WebCore/platform/graphics/android/GLWebViewState.h
@@ -191,8 +191,6 @@ public:
int baseContentWidth();
int baseContentHeight();
- void setViewport(SkRect& viewport, float scale);
-
// a rect containing the coordinates of all tiles in the current viewport
const SkIRect& viewportTileBounds() const { return m_viewportTileBounds; }
// a rect containing the viewportTileBounds before there was a scale change
@@ -205,9 +203,6 @@ public:
bool isScrolling() { return m_isScrolling || m_isViewportScrolling; }
void drawBackground(Color& backgroundColor);
- double setupDrawing(IntRect& viewRect, SkRect& visibleRect,
- IntRect& webViewRect, int titleBarHeight,
- IntRect& screenClip, float scale);
bool setLayersRenderingMode(TexturesResult&);
void fullInval();
@@ -253,6 +248,10 @@ public:
private:
void inval(const IntRect& rect);
+ void setViewport(const SkRect& viewport, float scale);
+ double setupDrawing(const IntRect& viewRect, const SkRect& visibleRect,
+ const IntRect& webViewRect, int titleBarHeight,
+ const IntRect& screenClip, float scale);
void showFrameInfo(const IntRect& rect, bool treesSwapped);
void clearRectWithColor(const IntRect& rect, float r, float g,
float b, float a);
diff --git a/Source/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp b/Source/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp
index 848b713..0aa1ae6 100644
--- a/Source/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp
@@ -26,6 +26,7 @@
#include "GraphicsContext.h"
#include "AffineTransform.h"
+#include "Font.h"
#include "Gradient.h"
#include "NotImplemented.h"
#include "Path.h"
@@ -36,6 +37,7 @@
#include "SkBlurMaskFilter.h"
#include "SkCanvas.h"
#include "SkColorPriv.h"
+#include "SkCornerPathEffect.h"
#include "SkDashPathEffect.h"
#include "SkDevice.h"
#include "SkGradientShader.h"
@@ -949,9 +951,33 @@ void GraphicsContext::clearPlatformShadow()
///////////////////////////////////////////////////////////////////////////////
-void GraphicsContext::drawFocusRing(const Vector<IntRect>&, int, int, const Color&)
+void GraphicsContext::drawFocusRing(const Vector<IntRect>& rects, int /* width */, int /* offset */, const Color& color)
{
- // Do nothing, since we draw the focus ring independently.
+ if (paintingDisabled())
+ return;
+
+ unsigned rectCount = rects.size();
+ if (!rectCount)
+ return;
+
+ SkRegion focusRingRegion;
+ const SkScalar focusRingOutset = WebCoreFloatToSkScalar(0.8);
+ for (unsigned i = 0; i < rectCount; i++) {
+ SkIRect r = rects[i];
+ r.inset(-focusRingOutset, -focusRingOutset);
+ focusRingRegion.op(r, SkRegion::kUnion_Op);
+ }
+
+ SkPath path;
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setStyle(SkPaint::kStroke_Style);
+
+ paint.setColor(color.rgb());
+ paint.setStrokeWidth(focusRingOutset * 2);
+ paint.setPathEffect(new SkCornerPathEffect(focusRingOutset * 2))->unref();
+ focusRingRegion.getBoundaryPath(&path);
+ platformContext()->mCanvas->drawPath(path, paint);
}
void GraphicsContext::drawFocusRing(const Path&, int, int, const Color&)
@@ -1240,6 +1266,25 @@ void GraphicsContext::clipConvexPolygon(size_t numPoints, const FloatPoint*, boo
// FIXME: IMPLEMENT!
}
+void GraphicsContext::drawHighlightForText(const Font& font, const TextRun& run, const FloatPoint& point, int h, const Color& backgroundColor, ColorSpace colorSpace, int from, int to, bool isActive)
+{
+ if (paintingDisabled())
+ return;
+
+ IntRect rect = (IntRect)font.selectionRectForText(run, point, h, from, to);
+ if (isActive)
+ fillRect(rect, backgroundColor, colorSpace);
+ else {
+ int x = rect.x(), y = rect.y(), w = rect.width(), h = rect.height();
+ const int t = 3, t2 = t * 2;
+
+ fillRect(IntRect(x, y, w, t), backgroundColor, colorSpace);
+ fillRect(IntRect(x, y+h-t, w, t), backgroundColor, colorSpace);
+ fillRect(IntRect(x, y+t, t, h-t2), backgroundColor, colorSpace);
+ fillRect(IntRect(x+w-t, y+t, t, h-t2), backgroundColor, colorSpace);
+ }
+}
+
} // namespace WebCore
///////////////////////////////////////////////////////////////////////////////
diff --git a/Source/WebCore/platform/graphics/android/ImageAndroid.cpp b/Source/WebCore/platform/graphics/android/ImageAndroid.cpp
index 01fe272..8e0c112 100644
--- a/Source/WebCore/platform/graphics/android/ImageAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/ImageAndroid.cpp
@@ -44,7 +44,7 @@
#include "SkTemplates.h"
#include "SkiaUtils.h"
-#include <utils/AssetManager.h>
+#include <androidfw/AssetManager.h>
//#define TRACE_SUBSAMPLED_BITMAPS
//#define TRACE_SKIPPED_BITMAPS
diff --git a/Source/WebCore/platform/graphics/android/MediaTexture.cpp b/Source/WebCore/platform/graphics/android/MediaTexture.cpp
index f3d1756..2582a53 100644
--- a/Source/WebCore/platform/graphics/android/MediaTexture.cpp
+++ b/Source/WebCore/platform/graphics/android/MediaTexture.cpp
@@ -191,8 +191,7 @@ void MediaTexture::draw(const TransformationMatrix& contentMatrix,
bool forceAlphaBlending = !(
PIXEL_FORMAT_RGBX_8888 == f ||
PIXEL_FORMAT_RGB_888 == f ||
- PIXEL_FORMAT_RGB_565 == f ||
- PIXEL_FORMAT_RGB_332 == f);
+ PIXEL_FORMAT_RGB_565 == f);
TilesManager::instance()->shader()->drawLayerQuad(contentMatrix,
mediaBounds,
diff --git a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
index a4af713..59c1271 100644
--- a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
+++ b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
@@ -38,9 +38,18 @@
#include <wtf/CurrentTime.h>
#include <wtf/text/CString.h>
+#ifdef DEBUG
+
#undef XLOG
#define XLOG(...) android_printLog(ANDROID_LOG_DEBUG, "ShaderProgram", __VA_ARGS__)
+#else
+
+#undef XLOGC
+#define XLOGC(...) android_printLog(ANDROID_LOG_DEBUG, "ShaderProgram", __VA_ARGS__)
+
+#endif
+
namespace WebCore {
static const char gVertexShader[] =
@@ -160,7 +169,7 @@ GLuint ShaderProgram::loadShader(GLenum shaderType, const char* pSource)
char* buf = (char*) malloc(infoLen);
if (buf) {
glGetShaderInfoLog(shader, infoLen, 0, buf);
- XLOG("could not compile shader %d:\n%s\n", shaderType, buf);
+ XLOGC("could not compile shader %d:\n%s\n", shaderType, buf);
free(buf);
}
glDeleteShader(shader);
@@ -175,13 +184,13 @@ GLint ShaderProgram::createProgram(const char* pVertexSource, const char* pFragm
{
GLuint vertexShader = loadShader(GL_VERTEX_SHADER, pVertexSource);
if (!vertexShader) {
- XLOG("couldn't load the vertex shader!");
+ XLOGC("couldn't load the vertex shader!");
return -1;
}
GLuint pixelShader = loadShader(GL_FRAGMENT_SHADER, pFragmentSource);
if (!pixelShader) {
- XLOG("couldn't load the pixel shader!");
+ XLOGC("couldn't load the pixel shader!");
return -1;
}
@@ -201,7 +210,7 @@ GLint ShaderProgram::createProgram(const char* pVertexSource, const char* pFragm
char* buf = (char*) malloc(bufLength);
if (buf) {
glGetProgramInfoLog(program, bufLength, 0, buf);
- XLOG("could not link program:\n%s\n", buf);
+ XLOGC("could not link program:\n%s\n", buf);
free(buf);
}
}
@@ -345,14 +354,54 @@ void ShaderProgram::setBlendingState(bool enableBlending)
// Drawing
/////////////////////////////////////////////////////////////////////////////////////////
-void ShaderProgram::setViewport(SkRect& viewport, float scale)
+void ShaderProgram::setupDrawing(const IntRect& viewRect, const SkRect& visibleRect,
+ const IntRect& webViewRect, int titleBarHeight,
+ const IntRect& screenClip, float scale)
{
+ m_webViewRect = webViewRect;
+ m_titleBarHeight = titleBarHeight;
+
+ //// viewport ////
TransformationMatrix ortho;
- GLUtils::setOrthographicMatrix(ortho, viewport.fLeft, viewport.fTop,
- viewport.fRight, viewport.fBottom, -1000, 1000);
+ GLUtils::setOrthographicMatrix(ortho, visibleRect.fLeft, visibleRect.fTop,
+ visibleRect.fRight, visibleRect.fBottom, -1000, 1000);
m_projectionMatrix = ortho;
- m_viewport = viewport;
+ m_viewport = visibleRect;
m_currentScale = scale;
+
+
+ //// viewRect ////
+ m_viewRect = viewRect;
+
+ // We do clipping using glScissor, which needs to take
+ // coordinates in screen space. The following matrix transform
+ // content coordinates in screen coordinates.
+ TransformationMatrix viewTranslate;
+ viewTranslate.translate(1.0, 1.0);
+
+ TransformationMatrix viewScale;
+ viewScale.scale3d(m_viewRect.width() * 0.5f, m_viewRect.height() * 0.5f, 1);
+
+ m_documentToScreenMatrix = viewScale * viewTranslate * m_projectionMatrix;
+
+ viewTranslate.scale3d(1, -1, 1);
+ m_documentToInvScreenMatrix = viewScale * viewTranslate * m_projectionMatrix;
+
+ IntRect rect(0, 0, m_webViewRect.width(), m_webViewRect.height());
+ m_documentViewport = m_documentToScreenMatrix.inverse().mapRect(rect);
+
+
+ //// clipping ////
+ IntRect mclip = screenClip;
+
+ // the clip from frameworks is in full screen coordinates
+ mclip.setY(screenClip.y() - m_webViewRect.y() - m_titleBarHeight);
+ FloatRect tclip = convertInvScreenCoordToScreenCoord(mclip);
+ m_screenClip.setLocation(IntPoint(tclip.x(), tclip.y()));
+ // use ceilf to handle view -> doc -> view coord rounding errors
+ m_screenClip.setSize(IntSize(ceilf(tclip.width()), ceilf(tclip.height())));
+
+ resetBlending();
}
// Calculate the matrix given the geometry.
@@ -441,28 +490,6 @@ void ShaderProgram::drawQuad(SkRect& geometry, int textureId, float opacity,
GLUtils::checkGlError("drawQuad");
}
-void ShaderProgram::setViewRect(const IntRect& viewRect)
-{
- m_viewRect = viewRect;
-
- // We do clipping using glScissor, which needs to take
- // coordinates in screen space. The following matrix transform
- // content coordinates in screen coordinates.
- TransformationMatrix translate;
- translate.translate(1.0, 1.0);
-
- TransformationMatrix scale;
- scale.scale3d(m_viewRect.width() * 0.5f, m_viewRect.height() * 0.5f, 1);
-
- m_documentToScreenMatrix = scale * translate * m_projectionMatrix;
-
- translate.scale3d(1, -1, 1);
- m_documentToInvScreenMatrix = scale * translate * m_projectionMatrix;
-
- IntRect rect(0, 0, m_webViewRect.width(), m_webViewRect.height());
- m_documentViewport = m_documentToScreenMatrix.inverse().mapRect(rect);
-}
-
// This function transform a clip rect extracted from the current layer
// into a clip rect in screen coordinates -- used by the clipping rects
FloatRect ShaderProgram::rectInScreenCoord(const TransformationMatrix& drawMatrix, const IntSize& size)
@@ -507,18 +534,6 @@ FloatRect ShaderProgram::convertScreenCoordToInvScreenCoord(const FloatRect& rec
return rectInInvScreenCoord(documentRect);
}
-void ShaderProgram::setScreenClip(const IntRect& clip)
-{
- m_screenClip = clip;
- IntRect mclip = clip;
-
- // the clip from frameworks is in full screen coordinates
- mclip.setY(clip.y() - m_webViewRect.y() - m_titleBarHeight);
- FloatRect tclip = convertInvScreenCoordToScreenCoord(mclip);
- IntRect screenClip(tclip.x(), tclip.y(), tclip.width(), tclip.height());
- m_screenClip = screenClip;
-}
-
// clip is in screen coordinates
void ShaderProgram::clip(const FloatRect& clip)
{
diff --git a/Source/WebCore/platform/graphics/android/ShaderProgram.h b/Source/WebCore/platform/graphics/android/ShaderProgram.h
index 3d7aab5..e528e60 100644
--- a/Source/WebCore/platform/graphics/android/ShaderProgram.h
+++ b/Source/WebCore/platform/graphics/android/ShaderProgram.h
@@ -86,7 +86,9 @@ public:
void init();
// Drawing
- void setViewport(SkRect& viewport, float scale);
+ void setupDrawing(const IntRect& viewRect, const SkRect& visibleRect,
+ const IntRect& webViewRect, int titleBarHeight,
+ const IntRect& screenClip, float scale);
float zValue(const TransformationMatrix& drawMatrix, float w, float h);
// For drawQuad and drawLayerQuad, they can handle 3 cases for now:
@@ -106,7 +108,6 @@ public:
Color pureColor = Color());
void drawVideoLayerQuad(const TransformationMatrix& drawMatrix,
float* textureMatrix, SkRect& geometry, int textureId);
- void setViewRect(const IntRect& viewRect);
FloatRect rectInScreenCoord(const TransformationMatrix& drawMatrix,
const IntSize& size);
FloatRect rectInInvScreenCoord(const TransformationMatrix& drawMatrix,
@@ -118,14 +119,10 @@ public:
FloatRect convertInvScreenCoordToScreenCoord(const FloatRect& rect);
FloatRect convertScreenCoordToInvScreenCoord(const FloatRect& rect);
- void setTitleBarHeight(int height) { m_titleBarHeight = height; }
- void setWebViewRect(const IntRect& rect) { m_webViewRect = rect; }
- void setScreenClip(const IntRect& clip);
void clip(const FloatRect& rect);
IntRect clippedRectWithViewport(const IntRect& rect, int margin = 0);
FloatRect documentViewport() { return m_documentViewport; }
- void resetBlending();
float contrast() { return m_contrast; }
void setContrast(float c) {
float contrast = c;
@@ -159,6 +156,7 @@ private:
const Color& pureColor);
Color shaderColor(Color pureColor, float opacity);
ShaderType getTextureShaderType(GLenum textureTarget);
+ void resetBlending();
bool m_blendingEnabled;
diff --git a/Source/WebCore/platform/graphics/android/TilesManager.cpp b/Source/WebCore/platform/graphics/android/TilesManager.cpp
index 7fe856b..184d80c 100644
--- a/Source/WebCore/platform/graphics/android/TilesManager.cpp
+++ b/Source/WebCore/platform/graphics/android/TilesManager.cpp
@@ -183,12 +183,14 @@ void TilesManager::discardTexturesVector(unsigned long long sparedDrawCount,
{
const unsigned int max = textures.size();
int dealloc = 0;
+ WTF::Vector<int> discardedIndex;
for (unsigned int i = 0; i < max; i++) {
TextureOwner* owner = textures[i]->owner();
if (!owner || owner->drawCount() < sparedDrawCount) {
if (deallocateGLTextures) {
// deallocate textures' gl memory
textures[i]->discardGLTexture();
+ discardedIndex.append(i);
} else if (owner) {
// simply detach textures from owner
static_cast<BaseTile*>(owner)->discardTextures();
@@ -196,9 +198,27 @@ void TilesManager::discardTexturesVector(unsigned long long sparedDrawCount,
dealloc++;
}
}
+
+ bool base = textures == m_textures;
+ // Clean up the vector of BaseTileTextures and reset the max texture count.
+ if (discardedIndex.size()) {
+ android::Mutex::Autolock lock(m_texturesLock);
+ for (int i = discardedIndex.size() - 1; i >= 0; i--)
+ textures.remove(discardedIndex[i]);
+
+ int remainedTextureNumber = textures.size();
+ int* countPtr = base ? &m_maxTextureCount : &m_maxLayerTextureCount;
+ if (remainedTextureNumber < *countPtr) {
+ XLOG("reset maxTextureCount for %s tiles from %d to %d",
+ base ? "base" : "layer", *countPtr, remainedTextureNumber);
+ *countPtr = remainedTextureNumber;
+ }
+
+ }
+
XLOG("Discarded %d %s textures (out of %d %s tiles)",
dealloc, (deallocateGLTextures ? "gl" : ""),
- max, (textures == m_textures) ? "base" : "layer");
+ max, base ? "base" : "layer");
}
void TilesManager::gatherTexturesNumbers(int* nbTextures, int* nbAllocatedTextures,
diff --git a/Source/WebCore/platform/network/android/ResourceHandleAndroid.cpp b/Source/WebCore/platform/network/android/ResourceHandleAndroid.cpp
index 13a26f0..4bc918b 100644
--- a/Source/WebCore/platform/network/android/ResourceHandleAndroid.cpp
+++ b/Source/WebCore/platform/network/android/ResourceHandleAndroid.cpp
@@ -96,9 +96,7 @@ void ResourceHandle::platformSetDefersLoading(bool)
}
// This static method is called to check to see if a POST response is in
-// the cache. The JNI call through to the HTTP cache stored on the Java
-// side may be slow, but is only used during a navigation to
-// a POST response.
+// the cache.
bool ResourceHandle::willLoadFromCache(ResourceRequest& request, Frame*)
{
// set the cache policy correctly, copied from
diff --git a/Source/WebCore/platform/network/android/ResourceLoaderAndroid.h b/Source/WebCore/platform/network/android/ResourceLoaderAndroid.h
index f627d62..5ff2322 100644
--- a/Source/WebCore/platform/network/android/ResourceLoaderAndroid.h
+++ b/Source/WebCore/platform/network/android/ResourceLoaderAndroid.h
@@ -46,7 +46,6 @@ public:
virtual void pauseLoad(bool) = 0;
// END ANDROID TODO
- // Call to java to find out if this URL is in the cache
static bool willLoadFromCache(const WebCore::KURL&, int64_t identifier);
protected:
ResourceLoaderAndroid() { }
diff --git a/Source/WebCore/platform/network/android/ResourceRequestAndroid.cpp b/Source/WebCore/platform/network/android/ResourceRequestAndroid.cpp
index 00735f3..1519e9c 100644
--- a/Source/WebCore/platform/network/android/ResourceRequestAndroid.cpp
+++ b/Source/WebCore/platform/network/android/ResourceRequestAndroid.cpp
@@ -30,17 +30,10 @@ namespace WebCore {
unsigned initializeMaximumHTTPConnectionCountPerHost()
{
-#if USE(CHROME_NETWORK_STACK)
// The chromium network stack already handles limiting the number of
// parallel requests per host, so there's no need to do it here. Therefore,
// this is set to a high value that should never be hit in practice.
return 10000;
-#else
- // This is used by the loader to control the number of parallel load
- // requests. Our java framework has 4 threads that can each pipeline up to
- // 5 requests. Use 20 as a maximum number.
- return 20;
-#endif
}
} // namespace WebCore
diff --git a/Source/WebCore/platform/text/android/HyphenationAndroid.cpp b/Source/WebCore/platform/text/android/HyphenationAndroid.cpp
index d1bd839..9933715 100644
--- a/Source/WebCore/platform/text/android/HyphenationAndroid.cpp
+++ b/Source/WebCore/platform/text/android/HyphenationAndroid.cpp
@@ -28,7 +28,7 @@
// For external hyphenation library.
#include "hyphen.h"
-#include <utils/AssetManager.h>
+#include <androidfw/AssetManager.h>
#include <wtf/text/CString.h>
#include <wtf/text/WTFString.h>
diff --git a/Source/WebCore/plugins/PluginView.cpp b/Source/WebCore/plugins/PluginView.cpp
index c39ceac..ffefc71 100644
--- a/Source/WebCore/plugins/PluginView.cpp
+++ b/Source/WebCore/plugins/PluginView.cpp
@@ -830,8 +830,6 @@ PassRefPtr<JSC::Bindings::Instance> PluginView::bindingInstance()
}
#endif
-#if USE(V8)
-// This is really JS engine independent
NPObject* PluginView::getNPObject() {
#if ENABLE(NETSCAPE_PLUGIN_API)
if (!m_plugin || !m_plugin->pluginFuncs()->getvalue)
@@ -859,7 +857,6 @@ NPObject* PluginView::getNPObject() {
return 0;
#endif // NETSCAPE_PLUGIN_API
}
-#endif // V8
void PluginView::disconnectStream(PluginStream* stream)
{
diff --git a/Source/WebCore/plugins/PluginView.h b/Source/WebCore/plugins/PluginView.h
index 976c65c..bf77e51 100644
--- a/Source/WebCore/plugins/PluginView.h
+++ b/Source/WebCore/plugins/PluginView.h
@@ -202,9 +202,7 @@ namespace WebCore {
void (*timerFunc)(NPP, uint32_t timerID));
void unscheduleTimer(NPP, uint32_t timerID);
#endif
-#if USE(V8)
NPObject* getNPObject();
-#endif
virtual void invalidateRect(const IntRect&);
diff --git a/Source/WebCore/plugins/android/PluginViewAndroid.cpp b/Source/WebCore/plugins/android/PluginViewAndroid.cpp
index dba7d3b..315d8a4 100644
--- a/Source/WebCore/plugins/android/PluginViewAndroid.cpp
+++ b/Source/WebCore/plugins/android/PluginViewAndroid.cpp
@@ -63,10 +63,6 @@
#include "ScriptController.h"
#include "Settings.h"
-#if USE(JSC)
-#include <runtime/JSLock.h>
-#endif
-
#include <wtf/ASCIICType.h>
// #include "runtime.h"
#include "WebViewCore.h"
@@ -484,9 +480,6 @@ void PluginView::setNPWindowIfNeeded()
m_npWindow.clipRect.bottom = m_pageRect.y() + m_pageRect.height();
if (m_plugin->pluginFuncs()->setwindow) {
-#if USE(JSC)
- JSC::JSLock::DropAllLocks dropAllLocks(false);
-#endif
setCallingPlugin(true);
m_plugin->pluginFuncs()->setwindow(m_instance, &m_npWindow);
setCallingPlugin(false);
diff --git a/Source/WebCore/rendering/InlineTextBox.cpp b/Source/WebCore/rendering/InlineTextBox.cpp
index e8a9c7f..d5eeeae 100644
--- a/Source/WebCore/rendering/InlineTextBox.cpp
+++ b/Source/WebCore/rendering/InlineTextBox.cpp
@@ -1070,8 +1070,12 @@ void InlineTextBox::paintTextMatchMarker(GraphicsContext* pt, const FloatPoint&
renderer()->theme()->platformInactiveTextSearchHighlightColor();
pt->save();
updateGraphicsContext(pt, color, color, 0, style->colorSpace()); // Don't draw text at all!
+#if PLATFORM(ANDROID)
+ pt->drawHighlightForText(font, run, FloatPoint(boxOrigin.x(), boxOrigin.y() - deltaY), selHeight, color, style->colorSpace(), sPos, ePos, marker.activeMatch);
+#else
pt->clip(FloatRect(boxOrigin.x(), boxOrigin.y() - deltaY, m_logicalWidth, selHeight));
pt->drawHighlightForText(font, run, FloatPoint(boxOrigin.x(), boxOrigin.y() - deltaY), selHeight, color, style->colorSpace(), sPos, ePos);
+#endif
pt->restore();
}
}
diff --git a/Source/WebCore/rendering/RenderBlockLineLayout.cpp b/Source/WebCore/rendering/RenderBlockLineLayout.cpp
index df20063..a2469a0 100644
--- a/Source/WebCore/rendering/RenderBlockLineLayout.cpp
+++ b/Source/WebCore/rendering/RenderBlockLineLayout.cpp
@@ -895,6 +895,10 @@ void RenderBlock::layoutInlineChildren(bool relayoutChildren, int& repaintLogica
m_minPreferredLogicalWidth = min(m_minPreferredLogicalWidth, maxWidth);
m_maxPreferredLogicalWidth = min(m_maxPreferredLogicalWidth, maxWidth);
+ // if overflow isn't visible, block elements may get clipped
+ // due to the limited content width. disable overflow clipping.
+ setHasOverflowClip(false);
+
IntRect overflow = layoutOverflowRect();
if (overflow.width() > maxWidth) {
overflow.setWidth(maxWidth);
diff --git a/Source/WebCore/rendering/RenderHTMLCanvas.cpp b/Source/WebCore/rendering/RenderHTMLCanvas.cpp
index de2a2c1..03b406b 100644
--- a/Source/WebCore/rendering/RenderHTMLCanvas.cpp
+++ b/Source/WebCore/rendering/RenderHTMLCanvas.cpp
@@ -47,6 +47,13 @@ RenderHTMLCanvas::RenderHTMLCanvas(HTMLCanvasElement* element)
bool RenderHTMLCanvas::requiresLayer() const
{
+#if PLATFORM(ANDROID)
+ // All Canvas are drawn on their own composited layer
+ // This improves performances a lot (as this simplify
+ // the repaint/inval chain dealing with the PictureSet)
+ return true;
+#endif
+
if (RenderReplaced::requiresLayer())
return true;
diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp
index 03f1e41..25a08e7 100644
--- a/Source/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp
@@ -1410,6 +1410,10 @@ bool RenderLayerCompositor::requiresCompositingForAndroidLayers(const RenderLaye
if (layer->isFixed())
return true;
#endif
+
+ if (layer->renderer()->isCanvas())
+ return true;
+
return false;
}
#endif