summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/html
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
commit5466563f4b5b6b86523e3f89bb7f77e5b5270c78 (patch)
tree8caccf7cd03a15207cde3ba282c88bf132482a91 /Source/WebCore/html
parent33b26980cb24288b5a9f2590ccf32a949281bb79 (diff)
Imported WebKit commit 0dc6cd75e1d4836eaffbb520be96fac4847cc9d2 (http://svn.webkit.org/repository/webkit/trunk@131300)
WebKit update which introduces the QtWebKitWidgets module that contains the WK1 widgets based API. (In fact it renames QtWebKit to QtWebKitWidgets while we're working on completing the entire split as part of https://bugs.webkit.org/show_bug.cgi?id=99314
Diffstat (limited to 'Source/WebCore/html')
-rw-r--r--Source/WebCore/html/BaseDateAndTimeInputType.cpp6
-rw-r--r--Source/WebCore/html/BaseDateAndTimeInputType.h4
-rw-r--r--Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp358
-rw-r--r--Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h101
-rw-r--r--Source/WebCore/html/ClassList.cpp66
-rw-r--r--Source/WebCore/html/ClassList.h28
-rw-r--r--Source/WebCore/html/DOMFormData.idl29
-rw-r--r--Source/WebCore/html/DOMSettableTokenList.cpp43
-rw-r--r--Source/WebCore/html/DOMSettableTokenList.h28
-rw-r--r--Source/WebCore/html/DOMSettableTokenList.idl15
-rw-r--r--Source/WebCore/html/DOMTokenList.cpp129
-rw-r--r--Source/WebCore/html/DOMTokenList.h24
-rw-r--r--Source/WebCore/html/DOMTokenList.idl27
-rw-r--r--Source/WebCore/html/DOMURL.idl28
-rw-r--r--Source/WebCore/html/DateInputType.cpp42
-rw-r--r--Source/WebCore/html/DateInputType.h27
-rw-r--r--Source/WebCore/html/DateTimeFieldsState.cpp2
-rw-r--r--Source/WebCore/html/DateTimeFieldsState.h4
-rw-r--r--Source/WebCore/html/DateTimeInputType.cpp63
-rw-r--r--Source/WebCore/html/DateTimeInputType.h17
-rw-r--r--Source/WebCore/html/DateTimeLocalInputType.cpp63
-rw-r--r--Source/WebCore/html/DateTimeLocalInputType.h19
-rw-r--r--Source/WebCore/html/FormController.cpp34
-rw-r--r--Source/WebCore/html/HTMLAllCollection.idl31
-rw-r--r--Source/WebCore/html/HTMLAnchorElement.idl71
-rw-r--r--Source/WebCore/html/HTMLAppletElement.idl41
-rw-r--r--Source/WebCore/html/HTMLAreaElement.idl43
-rw-r--r--Source/WebCore/html/HTMLAudioElement.idl14
-rw-r--r--Source/WebCore/html/HTMLBRElement.idl9
-rw-r--r--Source/WebCore/html/HTMLBaseElement.idl11
-rw-r--r--Source/WebCore/html/HTMLBaseFontElement.idl15
-rw-r--r--Source/WebCore/html/HTMLBodyElement.idl61
-rw-r--r--Source/WebCore/html/HTMLButtonElement.idl45
-rw-r--r--Source/WebCore/html/HTMLCanvasElement.cpp13
-rw-r--r--Source/WebCore/html/HTMLCanvasElement.h3
-rw-r--r--Source/WebCore/html/HTMLCanvasElement.idl23
-rw-r--r--Source/WebCore/html/HTMLCollection.cpp2
-rw-r--r--Source/WebCore/html/HTMLCollection.idl29
-rw-r--r--Source/WebCore/html/HTMLDListElement.idl9
-rw-r--r--Source/WebCore/html/HTMLDataListElement.idl12
-rw-r--r--Source/WebCore/html/HTMLDetailsElement.idl12
-rw-r--r--Source/WebCore/html/HTMLDialogElement.idl19
-rw-r--r--Source/WebCore/html/HTMLDirectoryElement.idl9
-rw-r--r--Source/WebCore/html/HTMLDivElement.idl9
-rw-r--r--Source/WebCore/html/HTMLDocument.idl65
-rw-r--r--Source/WebCore/html/HTMLElement.idl105
-rw-r--r--Source/WebCore/html/HTMLEmbedElement.idl33
-rw-r--r--Source/WebCore/html/HTMLFieldSetElement.idl27
-rw-r--r--Source/WebCore/html/HTMLFontElement.idl13
-rw-r--r--Source/WebCore/html/HTMLFormElement.cpp7
-rw-r--r--Source/WebCore/html/HTMLFormElement.h8
-rw-r--r--Source/WebCore/html/HTMLFormElement.idl43
-rw-r--r--Source/WebCore/html/HTMLFrameElement.idl41
-rw-r--r--Source/WebCore/html/HTMLFrameElementBase.cpp2
-rw-r--r--Source/WebCore/html/HTMLFrameSetElement.idl57
-rw-r--r--Source/WebCore/html/HTMLHRElement.idl15
-rw-r--r--Source/WebCore/html/HTMLHeadElement.idl9
-rw-r--r--Source/WebCore/html/HTMLHeadingElement.idl9
-rw-r--r--Source/WebCore/html/HTMLHtmlElement.idl11
-rw-r--r--Source/WebCore/html/HTMLIFrameElement.idl45
-rw-r--r--Source/WebCore/html/HTMLImageElement.idl59
-rw-r--r--Source/WebCore/html/HTMLInputElement.cpp8
-rw-r--r--Source/WebCore/html/HTMLInputElement.h1
-rw-r--r--Source/WebCore/html/HTMLInputElement.idl145
-rw-r--r--Source/WebCore/html/HTMLIntentElement.idl21
-rw-r--r--Source/WebCore/html/HTMLKeygenElement.idl33
-rw-r--r--Source/WebCore/html/HTMLLIElement.cpp4
-rw-r--r--Source/WebCore/html/HTMLLIElement.idl11
-rw-r--r--Source/WebCore/html/HTMLLabelElement.idl15
-rw-r--r--Source/WebCore/html/HTMLLegendElement.idl13
-rw-r--r--Source/WebCore/html/HTMLLinkElement.idl35
-rw-r--r--Source/WebCore/html/HTMLMapElement.idl11
-rw-r--r--Source/WebCore/html/HTMLMarqueeElement.idl45
-rw-r--r--Source/WebCore/html/HTMLMediaElement.cpp11
-rw-r--r--Source/WebCore/html/HTMLMediaElement.h2
-rw-r--r--Source/WebCore/html/HTMLMediaElement.idl148
-rw-r--r--Source/WebCore/html/HTMLMenuElement.idl9
-rw-r--r--Source/WebCore/html/HTMLMetaElement.idl15
-rw-r--r--Source/WebCore/html/HTMLMeterElement.idl37
-rw-r--r--Source/WebCore/html/HTMLModElement.idl11
-rw-r--r--Source/WebCore/html/HTMLOListElement.idl15
-rw-r--r--Source/WebCore/html/HTMLObjectElement.idl69
-rw-r--r--Source/WebCore/html/HTMLOptGroupElement.idl11
-rw-r--r--Source/WebCore/html/HTMLOptionElement.idl33
-rw-r--r--Source/WebCore/html/HTMLOptionsCollection.idl31
-rw-r--r--Source/WebCore/html/HTMLOutputElement.idl30
-rw-r--r--Source/WebCore/html/HTMLParagraphElement.idl9
-rw-r--r--Source/WebCore/html/HTMLParamElement.idl15
-rw-r--r--Source/WebCore/html/HTMLPlugInElement.cpp14
-rw-r--r--Source/WebCore/html/HTMLPlugInElement.h16
-rw-r--r--Source/WebCore/html/HTMLPlugInImageElement.cpp21
-rw-r--r--Source/WebCore/html/HTMLPlugInImageElement.h6
-rw-r--r--Source/WebCore/html/HTMLPreElement.idl19
-rw-r--r--Source/WebCore/html/HTMLProgressElement.idl22
-rw-r--r--Source/WebCore/html/HTMLPropertiesCollection.idl25
-rw-r--r--Source/WebCore/html/HTMLQuoteElement.idl9
-rw-r--r--Source/WebCore/html/HTMLScriptElement.idl27
-rw-r--r--Source/WebCore/html/HTMLSelectElement.cpp10
-rw-r--r--Source/WebCore/html/HTMLSelectElement.idl73
-rw-r--r--Source/WebCore/html/HTMLSourceElement.idl14
-rw-r--r--Source/WebCore/html/HTMLSpanElement.idl9
-rw-r--r--Source/WebCore/html/HTMLStyleElement.cpp35
-rw-r--r--Source/WebCore/html/HTMLStyleElement.h6
-rw-r--r--Source/WebCore/html/HTMLStyleElement.idl19
-rw-r--r--Source/WebCore/html/HTMLTableCaptionElement.idl13
-rw-r--r--Source/WebCore/html/HTMLTableCellElement.idl37
-rw-r--r--Source/WebCore/html/HTMLTableColElement.idl19
-rw-r--r--Source/WebCore/html/HTMLTableElement.idl63
-rw-r--r--Source/WebCore/html/HTMLTableRowElement.idl27
-rw-r--r--Source/WebCore/html/HTMLTableSectionElement.idl25
-rw-r--r--Source/WebCore/html/HTMLTextAreaElement.cpp32
-rw-r--r--Source/WebCore/html/HTMLTextAreaElement.idl69
-rw-r--r--Source/WebCore/html/HTMLTextFormControlElement.cpp4
-rw-r--r--Source/WebCore/html/HTMLTitleElement.idl9
-rw-r--r--Source/WebCore/html/HTMLTrackElement.idl34
-rw-r--r--Source/WebCore/html/HTMLUListElement.idl11
-rw-r--r--Source/WebCore/html/HTMLUnknownElement.idl7
-rw-r--r--Source/WebCore/html/HTMLVideoElement.idl48
-rw-r--r--Source/WebCore/html/ImageData.idl17
-rw-r--r--Source/WebCore/html/ImageDocument.cpp3
-rw-r--r--Source/WebCore/html/MediaController.idl64
-rw-r--r--Source/WebCore/html/MediaError.idl22
-rw-r--r--Source/WebCore/html/MediaKeyError.idl26
-rw-r--r--Source/WebCore/html/MediaKeyEvent.idl29
-rw-r--r--Source/WebCore/html/MicroDataItemValue.idl15
-rw-r--r--Source/WebCore/html/MonthInputType.cpp25
-rw-r--r--Source/WebCore/html/MonthInputType.h19
-rw-r--r--Source/WebCore/html/NumberInputType.cpp6
-rw-r--r--Source/WebCore/html/RadioNodeList.idl16
-rw-r--r--Source/WebCore/html/TextFieldInputType.cpp4
-rw-r--r--Source/WebCore/html/TextMetrics.idl9
-rw-r--r--Source/WebCore/html/TimeInputType.cpp228
-rw-r--r--Source/WebCore/html/TimeInputType.h69
-rw-r--r--Source/WebCore/html/TimeRanges.idl21
-rw-r--r--Source/WebCore/html/ValidityState.idl29
-rw-r--r--Source/WebCore/html/VoidCallback.idl12
-rw-r--r--Source/WebCore/html/WeekInputType.cpp25
-rw-r--r--Source/WebCore/html/WeekInputType.h18
-rw-r--r--Source/WebCore/html/canvas/ArrayBuffer.idl21
-rw-r--r--Source/WebCore/html/canvas/ArrayBufferView.idl20
-rw-r--r--Source/WebCore/html/canvas/CanvasGradient.idl14
-rw-r--r--Source/WebCore/html/canvas/CanvasPattern.idl8
-rw-r--r--Source/WebCore/html/canvas/CanvasRenderingContext.idl17
-rw-r--r--Source/WebCore/html/canvas/CanvasRenderingContext2D.idl404
-rwxr-xr-xSource/WebCore/html/canvas/DataView.idl97
-rw-r--r--Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl20
-rw-r--r--Source/WebCore/html/canvas/Float32Array.idl40
-rw-r--r--Source/WebCore/html/canvas/Float64Array.idl40
-rw-r--r--Source/WebCore/html/canvas/Int16Array.idl40
-rw-r--r--Source/WebCore/html/canvas/Int32Array.idl40
-rw-r--r--Source/WebCore/html/canvas/Int8Array.idl40
-rw-r--r--Source/WebCore/html/canvas/OESStandardDerivatives.idl18
-rw-r--r--Source/WebCore/html/canvas/OESTextureFloat.idl14
-rw-r--r--Source/WebCore/html/canvas/OESVertexArrayObject.idl28
-rw-r--r--Source/WebCore/html/canvas/Uint16Array.idl38
-rw-r--r--Source/WebCore/html/canvas/Uint32Array.idl38
-rw-r--r--Source/WebCore/html/canvas/Uint8Array.idl38
-rw-r--r--Source/WebCore/html/canvas/Uint8ClampedArray.idl40
-rw-r--r--Source/WebCore/html/canvas/WebGLActiveInfo.idl17
-rw-r--r--Source/WebCore/html/canvas/WebGLBuffer.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl26
-rw-r--r--Source/WebCore/html/canvas/WebGLContextAttributes.idl24
-rw-r--r--Source/WebCore/html/canvas/WebGLContextEvent.idl15
-rw-r--r--Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl20
-rw-r--r--Source/WebCore/html/canvas/WebGLDebugShaders.idl16
-rw-r--r--Source/WebCore/html/canvas/WebGLDepthTexture.idl18
-rw-r--r--Source/WebCore/html/canvas/WebGLFramebuffer.cpp22
-rw-r--r--Source/WebCore/html/canvas/WebGLFramebuffer.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLLoseContext.idl18
-rw-r--r--Source/WebCore/html/canvas/WebGLProgram.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLRenderbuffer.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLRenderingContext.cpp13
-rw-r--r--Source/WebCore/html/canvas/WebGLRenderingContext.h2
-rw-r--r--Source/WebCore/html/canvas/WebGLRenderingContext.idl1272
-rw-r--r--Source/WebCore/html/canvas/WebGLShader.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl17
-rw-r--r--Source/WebCore/html/canvas/WebGLTexture.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLUniformLocation.idl10
-rw-r--r--Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl10
-rw-r--r--Source/WebCore/html/parser/HTMLConstructionSite.cpp2
-rw-r--r--Source/WebCore/html/shadow/ContentDistributor.cpp21
-rw-r--r--Source/WebCore/html/shadow/ContentSelectorQuery.cpp42
-rw-r--r--Source/WebCore/html/shadow/ContentSelectorQuery.h26
-rw-r--r--Source/WebCore/html/shadow/DateTimeEditElement.cpp83
-rw-r--r--Source/WebCore/html/shadow/DateTimeEditElement.h16
-rw-r--r--Source/WebCore/html/shadow/DateTimeFieldElement.cpp15
-rw-r--r--Source/WebCore/html/shadow/DateTimeFieldElement.h5
-rw-r--r--Source/WebCore/html/shadow/DateTimeFieldElements.cpp208
-rw-r--r--Source/WebCore/html/shadow/DateTimeFieldElements.h85
-rw-r--r--Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp104
-rw-r--r--Source/WebCore/html/shadow/DateTimeNumericFieldElement.h15
-rw-r--r--Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp2
-rw-r--r--Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.h2
-rw-r--r--Source/WebCore/html/shadow/HTMLContentElement.idl15
-rw-r--r--Source/WebCore/html/shadow/HTMLShadowElement.cpp28
-rw-r--r--Source/WebCore/html/shadow/HTMLShadowElement.h6
-rw-r--r--Source/WebCore/html/shadow/HTMLShadowElement.idl15
-rw-r--r--Source/WebCore/html/shadow/InsertionPoint.cpp29
-rw-r--r--Source/WebCore/html/shadow/InsertionPoint.h6
-rw-r--r--Source/WebCore/html/shadow/PickerIndicatorElement.cpp (renamed from Source/WebCore/html/shadow/CalendarPickerElement.cpp)44
-rw-r--r--Source/WebCore/html/shadow/PickerIndicatorElement.h (renamed from Source/WebCore/html/shadow/CalendarPickerElement.h)12
-rw-r--r--Source/WebCore/html/shadow/SliderThumbElement.cpp2
-rw-r--r--Source/WebCore/html/shadow/SpinButtonElement.cpp2
-rw-r--r--Source/WebCore/html/shadow/TextFieldDecorationElement.cpp22
-rw-r--r--Source/WebCore/html/shadow/TextFieldDecorationElement.h3
-rw-r--r--Source/WebCore/html/track/TextTrack.idl59
-rw-r--r--Source/WebCore/html/track/TextTrackCue.idl87
-rw-r--r--Source/WebCore/html/track/TextTrackCueList.idl21
-rw-r--r--Source/WebCore/html/track/TextTrackList.idl45
-rw-r--r--Source/WebCore/html/track/TrackEvent.idl17
210 files changed, 4381 insertions, 3588 deletions
diff --git a/Source/WebCore/html/BaseDateAndTimeInputType.cpp b/Source/WebCore/html/BaseDateAndTimeInputType.cpp
index 4b7f93cf0..44c3a83d7 100644
--- a/Source/WebCore/html/BaseDateAndTimeInputType.cpp
+++ b/Source/WebCore/html/BaseDateAndTimeInputType.cpp
@@ -34,7 +34,7 @@
#include "HTMLInputElement.h"
#include "HTMLNames.h"
#include "KeyboardEvent.h"
-#include "LocalizedDate.h"
+#include "Localizer.h"
#include <limits>
#include <wtf/CurrentTime.h>
#include <wtf/DateMath.h>
@@ -156,7 +156,7 @@ String BaseDateAndTimeInputType::localizeValue(const String& proposedValue) cons
if (!parseToDateComponents(proposedValue, &date))
return proposedValue;
- String localized = formatLocalizedDate(date);
+ String localized = element()->localizer().formatDateTime(date);
return localized.isEmpty() ? proposedValue : localized;
}
@@ -170,7 +170,7 @@ String BaseDateAndTimeInputType::convertFromVisibleValue(const String& visibleVa
if (visibleValue.isEmpty())
return visibleValue;
- double parsedValue = parseLocalizedDate(visibleValue, dateType());
+ double parsedValue = element()->localizer().parseDateTime(visibleValue, dateType());
if (!isfinite(parsedValue))
return visibleValue;
diff --git a/Source/WebCore/html/BaseDateAndTimeInputType.h b/Source/WebCore/html/BaseDateAndTimeInputType.h
index a49910fde..96b7b5fe6 100644
--- a/Source/WebCore/html/BaseDateAndTimeInputType.h
+++ b/Source/WebCore/html/BaseDateAndTimeInputType.h
@@ -44,12 +44,13 @@ protected:
virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE;
virtual Decimal parseToNumber(const String&, const Decimal&) const OVERRIDE;
virtual bool parseToDateComponents(const String&, DateComponents*) const OVERRIDE;
+ virtual String sanitizeValue(const String&) const OVERRIDE;
virtual String serialize(const Decimal&) const OVERRIDE;
String serializeWithComponents(const DateComponents&) const;
+ virtual bool setMillisecondToDateComponents(double, DateComponents*) const = 0;
private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const = 0;
- virtual bool setMillisecondToDateComponents(double, DateComponents*) const = 0;
virtual DateComponents::Type dateType() const = 0;
virtual double valueAsDate() const OVERRIDE;
virtual void setValueAsDate(double, ExceptionCode&) const OVERRIDE;
@@ -63,7 +64,6 @@ private:
virtual String localizeValue(const String&) const OVERRIDE;
virtual String visibleValue() const OVERRIDE;
virtual String convertFromVisibleValue(const String&) const OVERRIDE;
- virtual String sanitizeValue(const String&) const OVERRIDE;
};
} // namespace WebCore
diff --git a/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp b/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp
new file mode 100644
index 000000000..a4668e1e3
--- /dev/null
+++ b/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
+
+#include "CSSValueKeywords.h"
+#include "DateComponents.h"
+#include "DateTimeFieldsState.h"
+#include "ElementShadow.h"
+#include "FormController.h"
+#include "HTMLDataListElement.h"
+#include "HTMLInputElement.h"
+#include "HTMLOptionElement.h"
+#include "KeyboardEvent.h"
+#include "Localizer.h"
+#include "Page.h"
+#include "PickerIndicatorElement.h"
+#include "RenderTheme.h"
+#include "ShadowRoot.h"
+#include <wtf/DateMath.h>
+
+namespace WebCore {
+
+void BaseMultipleFieldsDateAndTimeInputType::didBlurFromControl()
+{
+ // We don't need to call blur(). This function is called when control
+ // lost focus.
+
+ // Remove focus ring by CSS "focus" pseudo class.
+ element()->setFocus(false);
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::didFocusOnControl()
+{
+ // We don't need to call focus(). This function is called when control
+ // got focus.
+
+ // Add focus ring by CSS "focus" pseudo class.
+ element()->setFocus(true);
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::editControlValueChanged()
+{
+ RefPtr<HTMLInputElement> input(element());
+ input->setValueInternal(sanitizeValue(m_dateTimeEditElement->value()), DispatchNoEvent);
+ input->setNeedsStyleRecalc();
+ input->dispatchFormControlInputEvent();
+ input->dispatchFormControlChangeEvent();
+ input->notifyFormStateChanged();
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const
+{
+ return false;
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerDisabled() const
+{
+ return element()->readOnly();
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerReadOnly() const
+{
+ return element()->disabled();
+}
+
+BaseMultipleFieldsDateAndTimeInputType::BaseMultipleFieldsDateAndTimeInputType(HTMLInputElement* element)
+ : BaseDateAndTimeInputType(element)
+ , m_dateTimeEditElement(0)
+ , m_pickerIndicatorElement(0)
+ , m_pickerIndicatorIsVisible(false)
+ , m_pickerIndicatorIsAlwaysVisible(false)
+{
+}
+
+BaseMultipleFieldsDateAndTimeInputType::~BaseMultipleFieldsDateAndTimeInputType()
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->removeEditControlOwner();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::blur()
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->blurByOwner();
+}
+
+RenderObject* BaseMultipleFieldsDateAndTimeInputType::createRenderer(RenderArena* arena, RenderStyle* style) const
+{
+ return InputType::createRenderer(arena, style);
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree()
+{
+ DEFINE_STATIC_LOCAL(AtomicString, dateAndTimeInputContainerPseudoId, ("-webkit-date-and-time-container", AtomicString::ConstructFromLiteral));
+
+ ASSERT(element()->shadow());
+
+ Document* document = element()->document();
+ RefPtr<HTMLDivElement> container = HTMLDivElement::create(document);
+ element()->userAgentShadowRoot()->appendChild(container);
+ container->setShadowPseudoId(dateAndTimeInputContainerPseudoId);
+
+ RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(document, *this));
+ m_dateTimeEditElement = dateTimeEditElement.get();
+ container->appendChild(m_dateTimeEditElement);
+ updateInnerTextValue();
+
+#if ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER)
+ bool shouldAddPickerIndicator = false;
+#if ENABLE(DATALIST_ELEMENT)
+ if (InputType::themeSupportsDataListUI(this))
+ shouldAddPickerIndicator = true;
+#endif
+#if ENABLE(CALENDAR_PICKER)
+ RefPtr<RenderTheme> theme = document->page() ? document->page()->theme() : RenderTheme::defaultTheme();
+ if (theme->supportsCalendarPicker(formControlType())) {
+ shouldAddPickerIndicator = true;
+ m_pickerIndicatorIsAlwaysVisible = true;
+ }
+#endif
+ if (shouldAddPickerIndicator) {
+ RefPtr<PickerIndicatorElement> pickerElement = PickerIndicatorElement::create(document);
+ m_pickerIndicatorElement = pickerElement.get();
+ container->appendChild(m_pickerIndicatorElement);
+ m_pickerIndicatorIsVisible = true;
+ updatePickerIndicatorVisibility();
+ }
+#endif // ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER)
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::destroyShadowSubtree()
+{
+ if (m_dateTimeEditElement) {
+ m_dateTimeEditElement->removeEditControlOwner();
+ m_dateTimeEditElement = 0;
+ }
+ BaseDateAndTimeInputType::destroyShadowSubtree();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::focus(bool)
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->focusByOwner();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::forwardEvent(Event* event)
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->defaultEventHandler(event);
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::disabledAttributeChanged()
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->disabledStateChanged();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::handleKeydownEvent(KeyboardEvent* event)
+{
+ Document* document = element()->document();
+ RefPtr<RenderTheme> theme = document->page() ? document->page()->theme() : RenderTheme::defaultTheme();
+ if (theme->shouldOpenPickerWithF4Key() && event->keyIdentifier() == "F4") {
+ if (m_pickerIndicatorElement)
+ m_pickerIndicatorElement->openPopup();
+ event->setDefaultHandled();
+ } else if (m_pickerIndicatorIsVisible && event->keyIdentifier() == "Down" && event->getModifierState("Alt")) {
+ if (m_pickerIndicatorElement)
+ m_pickerIndicatorElement->openPopup();
+ event->setDefaultHandled();
+ } else
+ forwardEvent(event);
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::isKeyboardFocusable(KeyboardEvent*) const
+{
+ return false;
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::isMouseFocusable() const
+{
+ return false;
+}
+
+AtomicString BaseMultipleFieldsDateAndTimeInputType::localeIdentifier() const
+{
+ return element()->computeInheritedLanguage();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::minOrMaxAttributeChanged()
+{
+ updateInnerTextValue();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::readonlyAttributeChanged()
+{
+ if (m_dateTimeEditElement)
+ m_dateTimeEditElement->readOnlyStateChanged();
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::isTextField() const
+{
+ return false;
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::restoreFormControlState(const FormControlState& state)
+{
+ if (!m_dateTimeEditElement)
+ return;
+ DateComponents date;
+ setMillisecondToDateComponents(createStepRange(AnyIsDefaultStep).minimum().toDouble(), &date);
+ DateTimeFieldsState dateTimeFieldsState = DateTimeFieldsState::restoreFormControlState(state);
+ m_dateTimeEditElement->setValueAsDateTimeFieldsState(dateTimeFieldsState, date);
+ element()->setValueInternal(sanitizeValue(m_dateTimeEditElement->value()), DispatchNoEvent);
+}
+
+FormControlState BaseMultipleFieldsDateAndTimeInputType::saveFormControlState() const
+{
+ if (!m_dateTimeEditElement)
+ return FormControlState();
+
+ return m_dateTimeEditElement->valueAsDateTimeFieldsState().saveFormControlState();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::setValue(const String& sanitizedValue, bool valueChanged, TextFieldEventBehavior eventBehavior)
+{
+ InputType::setValue(sanitizedValue, valueChanged, eventBehavior);
+ if (valueChanged)
+ updateInnerTextValue();
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::shouldUseInputMethod() const
+{
+ return false;
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::stepAttributeChanged()
+{
+ updateInnerTextValue();
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue()
+{
+ if (!m_dateTimeEditElement)
+ return;
+
+ DateTimeEditElement::LayoutParameters layoutParameters(element()->localizer(), createStepRange(AnyIsDefaultStep));
+
+ DateComponents date;
+ const bool hasValue = parseToDateComponents(element()->value(), &date);
+ if (!hasValue)
+ setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date);
+
+ setupLayoutParameters(layoutParameters, date);
+
+ if (hasValue)
+ m_dateTimeEditElement->setValueAsDate(layoutParameters, date);
+ else
+ m_dateTimeEditElement->setEmptyValue(layoutParameters, date);
+}
+
+#if ENABLE(DATALIST_ELEMENT)
+void BaseMultipleFieldsDateAndTimeInputType::listAttributeTargetChanged()
+{
+ updatePickerIndicatorVisibility();
+}
+#endif
+
+#if ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER)
+void BaseMultipleFieldsDateAndTimeInputType::updatePickerIndicatorVisibility()
+{
+#if ENABLE(CALENDAR_PICKER)
+ if (m_pickerIndicatorIsAlwaysVisible) {
+ showPickerIndicator();
+ return;
+ }
+#endif
+#if ENABLE(DATALIST_ELEMENT)
+ if (HTMLDataListElement* dataList = element()->dataList()) {
+ RefPtr<HTMLCollection> options = dataList->options();
+ for (unsigned i = 0; HTMLOptionElement* option = toHTMLOptionElement(options->item(i)); ++i) {
+ if (element()->isValidValue(option->value())) {
+ showPickerIndicator();
+ return;
+ }
+ }
+ }
+ hidePickerIndicator();
+#endif
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::hidePickerIndicator()
+{
+ if (!m_pickerIndicatorIsVisible)
+ return;
+ m_pickerIndicatorIsVisible = false;
+ ASSERT(m_pickerIndicatorElement);
+ m_pickerIndicatorElement->setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
+}
+
+void BaseMultipleFieldsDateAndTimeInputType::showPickerIndicator()
+{
+ if (m_pickerIndicatorIsVisible)
+ return;
+ m_pickerIndicatorIsVisible = true;
+ ASSERT(m_pickerIndicatorElement);
+ m_pickerIndicatorElement->removeInlineStyleProperty(CSSPropertyDisplay);
+}
+#endif // ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER)
+
+int BaseMultipleFieldsDateAndTimeInputType::fullYear(const String& source) const
+{
+ DateComponents date;
+ if (!parseToDateComponents(source, &date))
+ return DateTimeEditElement::LayoutParameters::undefinedYear();
+ return date.fullYear();
+}
+
+bool BaseMultipleFieldsDateAndTimeInputType::shouldHaveSecondField(const DateComponents& date) const
+{
+ StepRange stepRange = createStepRange(AnyIsDefaultStep);
+ return date.second()
+ || !stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero()
+ || !stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero();
+}
+
+} // namespace WebCore
+
+#endif
diff --git a/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h b/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h
new file mode 100644
index 000000000..319330438
--- /dev/null
+++ b/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BaseMultipleFieldsDateAndTimeInputType_h
+#define BaseMultipleFieldsDateAndTimeInputType_h
+
+#include "BaseDateAndTimeInputType.h"
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateTimeEditElement.h"
+
+namespace WebCore {
+
+class PickerIndicatorElement;
+
+class BaseMultipleFieldsDateAndTimeInputType : public BaseDateAndTimeInputType, protected DateTimeEditElement::EditControlOwner {
+protected:
+ BaseMultipleFieldsDateAndTimeInputType(HTMLInputElement*);
+ virtual ~BaseMultipleFieldsDateAndTimeInputType();
+
+ int fullYear(const String&) const;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const = 0;
+ bool shouldHaveSecondField(const DateComponents&) const;
+
+private:
+ // DateTimeEditElement::EditControlOwner functions
+ virtual void didBlurFromControl() OVERRIDE FINAL;
+ virtual void didFocusOnControl() OVERRIDE FINAL;
+ virtual void editControlValueChanged() OVERRIDE FINAL;
+ virtual bool isEditControlOwnerDisabled() const OVERRIDE FINAL;
+ virtual bool isEditControlOwnerReadOnly() const OVERRIDE FINAL;
+ virtual AtomicString localeIdentifier() const OVERRIDE FINAL;
+
+ // InputType functions
+ virtual void blur() OVERRIDE FINAL;
+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const OVERRIDE FINAL;
+ virtual void createShadowSubtree() OVERRIDE FINAL;
+ virtual void destroyShadowSubtree() OVERRIDE FINAL;
+ virtual void disabledAttributeChanged() OVERRIDE FINAL;
+ virtual void focus(bool restorePreviousSelection) OVERRIDE FINAL;
+ virtual void forwardEvent(Event*) OVERRIDE FINAL;
+ virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE FINAL;
+ virtual bool hasCustomFocusLogic() const OVERRIDE FINAL;
+ virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE FINAL;
+ virtual bool isMouseFocusable() const OVERRIDE FINAL;
+ virtual bool isTextField() const OVERRIDE FINAL;
+ virtual void minOrMaxAttributeChanged() OVERRIDE FINAL;
+ virtual void readonlyAttributeChanged() OVERRIDE FINAL;
+ virtual void restoreFormControlState(const FormControlState&) OVERRIDE FINAL;
+ virtual FormControlState saveFormControlState() const OVERRIDE FINAL;
+ virtual void setValue(const String&, bool valueChanged, TextFieldEventBehavior) OVERRIDE FINAL;
+ virtual bool shouldUseInputMethod() const OVERRIDE FINAL;
+ virtual void stepAttributeChanged() OVERRIDE FINAL;
+ virtual void updateInnerTextValue() OVERRIDE FINAL;
+ virtual void listAttributeTargetChanged() OVERRIDE FINAL;
+
+ void showPickerIndicator();
+ void hidePickerIndicator();
+ void updatePickerIndicatorVisibility();
+
+ DateTimeEditElement* m_dateTimeEditElement;
+#if ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER)
+ PickerIndicatorElement* m_pickerIndicatorElement;
+ bool m_pickerIndicatorIsVisible;
+#if ENABLE(CALENDAR_PICKER)
+ bool m_pickerIndicatorIsAlwaysVisible;
+#endif
+#endif
+};
+
+} // namespace WebCore
+
+#endif
+#endif // TimeInputType_h
diff --git a/Source/WebCore/html/ClassList.cpp b/Source/WebCore/html/ClassList.cpp
index a325a1226..5ff3bdaf6 100644
--- a/Source/WebCore/html/ClassList.cpp
+++ b/Source/WebCore/html/ClassList.cpp
@@ -25,21 +25,17 @@
#include "config.h"
#include "ClassList.h"
-#include "Element.h"
-#include "HTMLNames.h"
#include "HTMLParserIdioms.h"
#include "SpaceSplitString.h"
#include <wtf/text/StringBuilder.h>
namespace WebCore {
-using namespace HTMLNames;
-
ClassList::ClassList(Element* element)
: m_element(element)
{
if (m_element->document()->inQuirksMode())
- m_classNamesForQuirksMode.set(m_element->getAttribute(classAttr), false);
+ m_classNamesForQuirksMode.set(value(), false);
}
void ClassList::ref()
@@ -64,71 +60,11 @@ const AtomicString ClassList::item(unsigned index) const
return classNames()[index];
}
-bool ClassList::contains(const AtomicString& token, ExceptionCode& ec) const
-{
- if (!validateToken(token, ec))
- return false;
- return containsInternal(token);
-}
-
bool ClassList::containsInternal(const AtomicString& token) const
{
return m_element->hasClass() && classNames().contains(token);
}
-void ClassList::add(const AtomicString& token, ExceptionCode& ec)
-{
- if (!validateToken(token, ec))
- return;
- addInternal(token);
-}
-
-void ClassList::addInternal(const AtomicString& token)
-{
- const AtomicString& oldClassName(m_element->getAttribute(classAttr));
- if (oldClassName.isEmpty())
- m_element->setAttribute(classAttr, token);
- else if (!containsInternal(token)) {
- const AtomicString& newClassName(addToken(oldClassName, token));
- m_element->setAttribute(classAttr, newClassName);
- }
-}
-
-void ClassList::remove(const AtomicString& token, ExceptionCode& ec)
-{
- if (!validateToken(token, ec))
- return;
- removeInternal(token);
-}
-
-void ClassList::removeInternal(const AtomicString& token)
-{
- // Check using contains first since it uses AtomicString comparisons instead
- // of character by character testing.
- if (!containsInternal(token))
- return;
- const AtomicString& newClassName(removeToken(m_element->getAttribute(classAttr), token));
- m_element->setAttribute(classAttr, newClassName);
-}
-
-bool ClassList::toggle(const AtomicString& token, ExceptionCode& ec)
-{
- if (!validateToken(token, ec))
- return false;
-
- if (containsInternal(token)) {
- removeInternal(token);
- return false;
- }
- addInternal(token);
- return true;
-}
-
-String ClassList::toString() const
-{
- return m_element->getAttribute(classAttr);
-}
-
void ClassList::reset(const String& newClassName)
{
if (m_element->document()->inQuirksMode())
diff --git a/Source/WebCore/html/ClassList.h b/Source/WebCore/html/ClassList.h
index 992fad474..5e339c045 100644
--- a/Source/WebCore/html/ClassList.h
+++ b/Source/WebCore/html/ClassList.h
@@ -26,11 +26,17 @@
#define ClassList_h
#include "DOMTokenList.h"
+#include "Element.h"
+#include "HTMLNames.h"
#include "SpaceSplitString.h"
#include <wtf/PassOwnPtr.h>
+#include <wtf/Vector.h>
+
namespace WebCore {
+using namespace HTMLNames;
+
class Element;
typedef int ExceptionCode;
@@ -42,30 +48,26 @@ public:
return adoptPtr(new ClassList(element));
}
- virtual void ref();
- virtual void deref();
+ virtual void ref() OVERRIDE;
+ virtual void deref() OVERRIDE;
- virtual unsigned length() const;
- virtual const AtomicString item(unsigned index) const;
- virtual bool contains(const AtomicString&, ExceptionCode&) const;
- virtual void add(const AtomicString&, ExceptionCode&);
- virtual void remove(const AtomicString&, ExceptionCode&);
- virtual bool toggle(const AtomicString&, ExceptionCode&);
- virtual String toString() const;
+ virtual unsigned length() const OVERRIDE;
+ virtual const AtomicString item(unsigned index) const OVERRIDE;
- virtual Element* element() { return m_element; }
+ virtual Element* element() OVERRIDE { return m_element; }
void reset(const String&);
private:
ClassList(Element*);
- void addInternal(const AtomicString&);
- bool containsInternal(const AtomicString&) const;
- void removeInternal(const AtomicString&);
+ virtual bool containsInternal(const AtomicString&) const OVERRIDE;
const SpaceSplitString& classNames() const;
+ virtual AtomicString value() const OVERRIDE { return m_element->getAttribute(classAttr); }
+ virtual void setValue(const AtomicString& value) OVERRIDE { m_element->setAttribute(classAttr, value); }
+
Element* m_element;
SpaceSplitString m_classNamesForQuirksMode;
};
diff --git a/Source/WebCore/html/DOMFormData.idl b/Source/WebCore/html/DOMFormData.idl
index 73eaa6618..cf16babdb 100644
--- a/Source/WebCore/html/DOMFormData.idl
+++ b/Source/WebCore/html/DOMFormData.idl
@@ -28,20 +28,17 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ CustomConstructor,
+ ConstructorParameters=1,
+ JSGenerateToNativeObject,
+ JSGenerateToJSObject,
+ InterfaceName=FormData
+] interface DOMFormData {
+ // void append(DOMString name, DOMString value);
+ // void append(DOMString name, Blob value, optional DOMString filename);
+ [Custom] void append(in [Optional=DefaultIsUndefined] DOMString name,
+ in [Optional=DefaultIsUndefined] DOMString value,
+ in [Optional=DefaultIsUndefined] DOMString filename);
+};
- interface [
- CustomConstructor,
- ConstructorParameters=1,
- JSGenerateToNativeObject,
- JSGenerateToJSObject,
- InterfaceName=FormData
- ] DOMFormData {
- // void append(DOMString name, DOMString value);
- // void append(DOMString name, Blob value, optional DOMString filename);
- [Custom] void append(in [Optional=DefaultIsUndefined] DOMString name,
- in [Optional=DefaultIsUndefined] DOMString value,
- in [Optional=DefaultIsUndefined] DOMString filename);
- };
-
-}
diff --git a/Source/WebCore/html/DOMSettableTokenList.cpp b/Source/WebCore/html/DOMSettableTokenList.cpp
index 3a86e9c00..4ef0f7f51 100644
--- a/Source/WebCore/html/DOMSettableTokenList.cpp
+++ b/Source/WebCore/html/DOMSettableTokenList.cpp
@@ -44,55 +44,46 @@ const AtomicString DOMSettableTokenList::item(unsigned index) const
return m_tokens[index];
}
-bool DOMSettableTokenList::contains(const AtomicString& token, ExceptionCode& ec) const
+bool DOMSettableTokenList::containsInternal(const AtomicString& token) const
{
- if (!validateToken(token, ec))
- return false;
return m_tokens.contains(token);
}
-void DOMSettableTokenList::add(const AtomicString& token, ExceptionCode& ec)
+void DOMSettableTokenList::add(const Vector<String>& tokens, ExceptionCode& ec)
{
- if (!validateToken(token, ec) || m_tokens.contains(token))
- return;
- addInternal(token);
+ DOMTokenList::add(tokens, ec);
+
+ for (size_t i = 0; i < tokens.size(); ++i) {
+ if (m_tokens.isNull())
+ m_tokens.set(tokens[i], false);
+ else
+ m_tokens.add(tokens[i]);
+ }
}
void DOMSettableTokenList::addInternal(const AtomicString& token)
{
- m_value = addToken(m_value, token);
+ DOMTokenList::addInternal(token);
if (m_tokens.isNull())
m_tokens.set(token, false);
else
m_tokens.add(token);
}
-void DOMSettableTokenList::remove(const AtomicString& token, ExceptionCode& ec)
+void DOMSettableTokenList::remove(const Vector<String>& tokens, ExceptionCode& ec)
{
- if (!validateToken(token, ec) || !m_tokens.contains(token))
- return;
- removeInternal(token);
+ DOMTokenList::remove(tokens, ec);
+ for (size_t i = 0; i < tokens.size(); ++i)
+ m_tokens.remove(tokens[i]);
}
void DOMSettableTokenList::removeInternal(const AtomicString& token)
{
- m_value = removeToken(m_value, token);
+ DOMTokenList::removeInternal(token);
m_tokens.remove(token);
}
-bool DOMSettableTokenList::toggle(const AtomicString& token, ExceptionCode& ec)
-{
- if (!validateToken(token, ec))
- return false;
- if (m_tokens.contains(token)) {
- removeInternal(token);
- return false;
- }
- addInternal(token);
- return true;
-}
-
-void DOMSettableTokenList::setValue(const String& value)
+void DOMSettableTokenList::setValue(const AtomicString& value)
{
m_value = value;
m_tokens.set(value, false);
diff --git a/Source/WebCore/html/DOMSettableTokenList.h b/Source/WebCore/html/DOMSettableTokenList.h
index 0b23c6ab2..f338dc32b 100644
--- a/Source/WebCore/html/DOMSettableTokenList.h
+++ b/Source/WebCore/html/DOMSettableTokenList.h
@@ -44,28 +44,28 @@ public:
}
virtual ~DOMSettableTokenList();
- virtual void ref() { RefCounted<DOMSettableTokenList>::ref(); }
- virtual void deref() { RefCounted<DOMSettableTokenList>::deref(); }
+ virtual void ref() OVERRIDE { RefCounted<DOMSettableTokenList>::ref(); }
+ virtual void deref() OVERRIDE { RefCounted<DOMSettableTokenList>::deref(); }
- virtual unsigned length() const { return m_tokens.size(); }
- virtual const AtomicString item(unsigned index) const;
- virtual bool contains(const AtomicString&, ExceptionCode&) const;
- virtual void add(const AtomicString&, ExceptionCode&);
- virtual void remove(const AtomicString&, ExceptionCode&);
- virtual bool toggle(const AtomicString&, ExceptionCode&);
- virtual String toString() const { return value(); }
+ virtual unsigned length() const OVERRIDE { return m_tokens.size(); }
+ virtual const AtomicString item(unsigned index) const OVERRIDE;
+
+ virtual void add(const Vector<String>&, ExceptionCode&) OVERRIDE;
+ virtual void remove(const Vector<String>&, ExceptionCode&) OVERRIDE;
+
+ virtual AtomicString value() const OVERRIDE { return m_value; }
+ virtual void setValue(const AtomicString&) OVERRIDE;
- String value() const { return m_value; }
const SpaceSplitString& tokens() const { return m_tokens; }
- void setValue(const String&);
private:
DOMSettableTokenList();
- void removeInternal(const AtomicString&);
- void addInternal(const AtomicString&);
+ virtual void addInternal(const AtomicString&) OVERRIDE;
+ virtual bool containsInternal(const AtomicString&) const OVERRIDE;
+ virtual void removeInternal(const AtomicString&) OVERRIDE;
- String m_value;
+ AtomicString m_value;
SpaceSplitString m_tokens;
};
diff --git a/Source/WebCore/html/DOMSettableTokenList.idl b/Source/WebCore/html/DOMSettableTokenList.idl
index 93bf67f69..5b4d10869 100644
--- a/Source/WebCore/html/DOMSettableTokenList.idl
+++ b/Source/WebCore/html/DOMSettableTokenList.idl
@@ -22,13 +22,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module core {
+[
+ IndexedGetter,
+ JSGenerateToJSObject
+] interface DOMSettableTokenList : DOMTokenList {
+ attribute DOMString value;
+};
- interface [
- IndexedGetter,
- JSGenerateToJSObject
- ] DOMSettableTokenList : DOMTokenList {
- attribute DOMString value;
- };
-
-}
diff --git a/Source/WebCore/html/DOMTokenList.cpp b/Source/WebCore/html/DOMTokenList.cpp
index 7132b1169..533b1f103 100644
--- a/Source/WebCore/html/DOMTokenList.cpp
+++ b/Source/WebCore/html/DOMTokenList.cpp
@@ -49,23 +49,138 @@ bool DOMTokenList::validateToken(const AtomicString& token, ExceptionCode& ec)
return true;
}
+bool DOMTokenList::validateTokens(const Vector<String>& tokens, ExceptionCode& ec)
+{
+ for (size_t i = 0; i < tokens.size(); ++i) {
+ if (!validateToken(tokens[i], ec))
+ return false;
+ }
+
+ return true;
+}
+
+bool DOMTokenList::contains(const AtomicString& token, ExceptionCode& ec) const
+{
+ if (!validateToken(token, ec))
+ return false;
+ return containsInternal(token);
+}
+
+void DOMTokenList::add(const AtomicString& token, ExceptionCode& ec)
+{
+ Vector<String> tokens;
+ tokens.append(token.string());
+ add(tokens, ec);
+}
+
+void DOMTokenList::add(const Vector<String>& tokens, ExceptionCode& ec)
+{
+ Vector<String> filteredTokens;
+ for (size_t i = 0; i < tokens.size(); ++i) {
+ if (!validateToken(tokens[i], ec))
+ return;
+ if (!containsInternal(tokens[i]))
+ filteredTokens.append(tokens[i]);
+ }
+
+ if (filteredTokens.isEmpty())
+ return;
+
+ setValue(addTokens(value(), filteredTokens));
+}
+
+void DOMTokenList::remove(const AtomicString& token, ExceptionCode& ec)
+{
+ Vector<String> tokens;
+ tokens.append(token.string());
+ remove(tokens, ec);
+}
+
+void DOMTokenList::remove(const Vector<String>& tokens, ExceptionCode& ec)
+{
+ if (!validateTokens(tokens, ec))
+ return;
+
+ // Check using containsInternal first since it is a lot faster than going
+ // through the string character by character.
+ bool found = false;
+ for (size_t i = 0; i < tokens.size(); ++i) {
+ if (containsInternal(tokens[i])) {
+ found = true;
+ break;
+ }
+ }
+
+ if (found)
+ setValue(removeTokens(value(), tokens));
+}
+
+bool DOMTokenList::toggle(const AtomicString& token, ExceptionCode& ec)
+{
+ if (!validateToken(token, ec))
+ return false;
+
+ if (containsInternal(token)) {
+ removeInternal(token);
+ return false;
+ }
+ addInternal(token);
+ return true;
+}
+
+void DOMTokenList::addInternal(const AtomicString& token)
+{
+ if (!containsInternal(token))
+ setValue(addToken(value(), token));
+}
+
+void DOMTokenList::removeInternal(const AtomicString& token)
+{
+ // Check using contains first since it uses AtomicString comparisons instead
+ // of character by character testing.
+ if (!containsInternal(token))
+ return;
+ setValue(removeToken(value(), token));
+}
+
String DOMTokenList::addToken(const AtomicString& input, const AtomicString& token)
{
- if (input.isEmpty())
- return token;
+ Vector<String> tokens;
+ tokens.append(token.string());
+ return addTokens(input, tokens);
+}
+
+String DOMTokenList::addTokens(const AtomicString& input, const Vector<String>& tokens)
+{
+ bool needsSpace = false;
StringBuilder builder;
- builder.append(input);
- if (!isHTMLSpace(input[input.length() - 1]))
- builder.append(' ');
+ if (!input.isEmpty()) {
+ builder.append(input);
+ needsSpace = !isHTMLSpace(input[input.length() - 1]);
+ }
+
+ for (size_t i = 0; i < tokens.size(); ++i) {
+ if (needsSpace)
+ builder.append(' ');
+ builder.append(tokens[i]);
+ needsSpace = true;
+ }
- builder.append(token);
return builder.toString();
}
String DOMTokenList::removeToken(const AtomicString& input, const AtomicString& token)
{
+ Vector<String> tokens;
+ tokens.append(token.string());
+ return removeTokens(input, tokens);
+}
+
+String DOMTokenList::removeTokens(const AtomicString& input, const Vector<String>& tokens)
+{
// Algorithm defined at http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#remove-a-token-from-a-string
+ // New spec is at http://dom.spec.whatwg.org/#remove-a-token-from-a-string
unsigned inputLength = input.length();
StringBuilder output; // 3
@@ -85,7 +200,7 @@ String DOMTokenList::removeToken(const AtomicString& input, const AtomicString&
s.append(input[position++]);
// Step 8
- if (s.toStringPreserveCapacity() == token) {
+ if (tokens.contains(s.toStringPreserveCapacity())) {
// Step 8.1
while (position < inputLength && isHTMLSpace(input[position]))
++position;
diff --git a/Source/WebCore/html/DOMTokenList.h b/Source/WebCore/html/DOMTokenList.h
index fd110b7ff..4b25dce5e 100644
--- a/Source/WebCore/html/DOMTokenList.h
+++ b/Source/WebCore/html/DOMTokenList.h
@@ -45,18 +45,32 @@ public:
virtual unsigned length() const = 0;
virtual const AtomicString item(unsigned index) const = 0;
- virtual bool contains(const AtomicString&, ExceptionCode&) const = 0;
- virtual void add(const AtomicString&, ExceptionCode&) = 0;
- virtual void remove(const AtomicString&, ExceptionCode&) = 0;
- virtual bool toggle(const AtomicString&, ExceptionCode&) = 0;
- virtual String toString() const = 0;
+
+ bool contains(const AtomicString&, ExceptionCode&) const;
+ virtual void add(const Vector<String>&, ExceptionCode&);
+ void add(const AtomicString&, ExceptionCode&);
+ virtual void remove(const Vector<String>&, ExceptionCode&);
+ void remove(const AtomicString&, ExceptionCode&);
+ bool toggle(const AtomicString&, ExceptionCode&);
+
+ AtomicString toString() const { return value(); }
virtual Element* element() { return 0; }
protected:
+ virtual AtomicString value() const = 0;
+ virtual void setValue(const AtomicString&) = 0;
+
+ virtual void addInternal(const AtomicString&);
+ virtual bool containsInternal(const AtomicString&) const = 0;
+ virtual void removeInternal(const AtomicString&);
+
static bool validateToken(const AtomicString&, ExceptionCode&);
+ static bool validateTokens(const Vector<String>&, ExceptionCode&);
static String addToken(const AtomicString&, const AtomicString&);
+ static String addTokens(const AtomicString&, const Vector<String>&);
static String removeToken(const AtomicString&, const AtomicString&);
+ static String removeTokens(const AtomicString&, const Vector<String>&);
};
} // namespace WebCore
diff --git a/Source/WebCore/html/DOMTokenList.idl b/Source/WebCore/html/DOMTokenList.idl
index cf57e1aee..49544b7e5 100644
--- a/Source/WebCore/html/DOMTokenList.idl
+++ b/Source/WebCore/html/DOMTokenList.idl
@@ -22,22 +22,19 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module core {
-
- interface [
- GenerateIsReachable=ImplElementRoot,
- IndexedGetter
- ] DOMTokenList {
- readonly attribute unsigned long length;
- [TreatReturnedNullStringAs=Null] DOMString item(in unsigned long index);
- boolean contains(in DOMString token) raises(DOMException);
- void add(in DOMString token) raises(DOMException);
- void remove(in DOMString token) raises(DOMException);
- boolean toggle(in DOMString token) raises(DOMException);
+[
+ GenerateIsReachable=ImplElementRoot,
+ IndexedGetter
+] interface DOMTokenList {
+ readonly attribute unsigned long length;
+ [TreatReturnedNullStringAs=Null] DOMString item(in unsigned long index);
+ boolean contains(in DOMString token) raises(DOMException);
+ void add(in DOMString... tokens) raises(DOMException);
+ void remove(in DOMString... tokens) raises(DOMException);
+ boolean toggle(in DOMString token) raises(DOMException);
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- [NotEnumerable] DOMString toString();
+ [NotEnumerable] DOMString toString();
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/DOMURL.idl b/Source/WebCore/html/DOMURL.idl
index b36e8f7ce..a90443f55 100644
--- a/Source/WebCore/html/DOMURL.idl
+++ b/Source/WebCore/html/DOMURL.idl
@@ -24,22 +24,20 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=BLOB,
- Constructor,
- JSGenerateToNativeObject,
- JSGenerateToJSObject,
- JSNoStaticTables,
- InterfaceName=URL
- ] DOMURL {
+[
+ Conditional=BLOB,
+ Constructor,
+ JSGenerateToNativeObject,
+ JSGenerateToJSObject,
+ JSNoStaticTables,
+ InterfaceName=URL
+] interface DOMURL {
#if defined(ENABLE_MEDIA_SOURCE) && ENABLE_MEDIA_SOURCE
- [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaSource? source);
+ [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaSource? source);
#endif
#if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
- [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaStream? stream);
+ [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaStream? stream);
#endif
- [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in Blob? blob);
- [CallWith=ScriptExecutionContext] static void revokeObjectURL(in DOMString url);
- };
-}
+ [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in Blob? blob);
+ [CallWith=ScriptExecutionContext] static void revokeObjectURL(in DOMString url);
+};
diff --git a/Source/WebCore/html/DateInputType.cpp b/Source/WebCore/html/DateInputType.cpp
index 4e973da69..1ff59329a 100644
--- a/Source/WebCore/html/DateInputType.cpp
+++ b/Source/WebCore/html/DateInputType.cpp
@@ -31,17 +31,18 @@
#include "config.h"
#include "DateInputType.h"
-#include "CalendarPickerElement.h"
+#if ENABLE(INPUT_TYPE_DATE)
#include "DateComponents.h"
+#include "DateTimeFieldsState.h"
#include "HTMLInputElement.h"
#include "HTMLNames.h"
#include "InputTypeNames.h"
#include "KeyboardEvent.h"
-#include "LocalizedDate.h"
+#include "LocalizedStrings.h"
+#include "Localizer.h"
+#include "PickerIndicatorElement.h"
#include <wtf/PassOwnPtr.h>
-#if ENABLE(INPUT_TYPE_DATE)
-
namespace WebCore {
using namespace HTMLNames;
@@ -51,8 +52,8 @@ static const int dateDefaultStepBase = 0;
static const int dateStepScaleFactor = 86400000;
inline DateInputType::DateInputType(HTMLInputElement* element)
- : BaseDateAndTimeInputType(element)
-#if ENABLE(CALENDAR_PICKER)
+ : BaseDateInputType(element)
+#if ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
, m_pickerElement(0)
#endif
{
@@ -102,11 +103,11 @@ bool DateInputType::isDateField() const
return true;
}
-#if ENABLE(CALENDAR_PICKER)
+#if ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
void DateInputType::createShadowSubtree()
{
BaseDateAndTimeInputType::createShadowSubtree();
- RefPtr<CalendarPickerElement> pickerElement = CalendarPickerElement::create(element()->document());
+ RefPtr<PickerIndicatorElement> pickerElement = PickerIndicatorElement::create(element()->document());
m_pickerElement = pickerElement.get();
containerElement()->insertBefore(m_pickerElement, innerBlockElement()->nextSibling(), ASSERT_NO_EXCEPTION);
}
@@ -164,9 +165,30 @@ bool DateInputType::usesFixedPlaceholder() const
String DateInputType::fixedPlaceholder()
{
- return localizedDateFormatText();
+ return element()->localizer().dateFormatText();
}
-#endif // ENABLE(CALENDAR_PICKER)
+#endif // ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) && !ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
+String DateInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+{
+ if (!dateTimeFieldsState.hasDayOfMonth() || !dateTimeFieldsState.hasMonth() || !dateTimeFieldsState.hasYear())
+ return emptyString();
+
+ return String::format("%04u-%02u-%02u", dateTimeFieldsState.year(), dateTimeFieldsState.month(), dateTimeFieldsState.dayOfMonth());
+}
+
+void DateInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
+{
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.dateFormat();
+ layoutParameters.fallbackDateTimeFormat = ASCIILiteral("yyyy-MM-dd");
+ layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
+ layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+ layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
+ layoutParameters.placeholderForMonth = placeholderForMonthField();
+ layoutParameters.placeholderForYear = placeholderForYearField();
+}
+#endif
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/DateInputType.h b/Source/WebCore/html/DateInputType.h
index d48049daa..934ac2629 100644
--- a/Source/WebCore/html/DateInputType.h
+++ b/Source/WebCore/html/DateInputType.h
@@ -31,16 +31,21 @@
#ifndef DateInputType_h
#define DateInputType_h
-#include "BaseDateAndTimeInputType.h"
-#include <wtf/RefPtr.h>
-
#if ENABLE(INPUT_TYPE_DATE)
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
+#include <wtf/RefPtr.h>
namespace WebCore {
-class CalendarPickerElement;
+class PickerIndicatorElement;
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) && !ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseDateInputType;
+#else
+typedef BaseDateAndTimeInputType BaseDateInputType;
+#endif
-class DateInputType : public BaseDateAndTimeInputType {
+class DateInputType : public BaseDateInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
@@ -52,7 +57,8 @@ private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isDateField() const OVERRIDE;
-#if ENABLE(CALENDAR_PICKER)
+
+#if ENABLE(INPUT_TYPE_DATE_LEGACY_UI)
virtual void createShadowSubtree() OVERRIDE;
virtual void destroyShadowSubtree() OVERRIDE;
virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE;
@@ -65,10 +71,17 @@ private:
virtual bool needsContainer() const OVERRIDE;
virtual bool shouldHaveSpinButton() const OVERRIDE;
- CalendarPickerElement* m_pickerElement;
+ PickerIndicatorElement* m_pickerElement;
+#else
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE;
+#endif
#endif
};
} // namespace WebCore
+
#endif
#endif // DateInputType_h
diff --git a/Source/WebCore/html/DateTimeFieldsState.cpp b/Source/WebCore/html/DateTimeFieldsState.cpp
index 990389dc4..ae03a13da 100644
--- a/Source/WebCore/html/DateTimeFieldsState.cpp
+++ b/Source/WebCore/html/DateTimeFieldsState.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldsState.h"
#include "FormController.h"
diff --git a/Source/WebCore/html/DateTimeFieldsState.h b/Source/WebCore/html/DateTimeFieldsState.h
index 6fb444071..2dd219546 100644
--- a/Source/WebCore/html/DateTimeFieldsState.h
+++ b/Source/WebCore/html/DateTimeFieldsState.h
@@ -26,7 +26,7 @@
#ifndef DateTimeFieldsState_h
#define DateTimeFieldsState_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include <wtf/text/WTFString.h>
namespace WebCore {
@@ -87,7 +87,7 @@ public:
private:
unsigned m_year;
- unsigned m_month;
+ unsigned m_month; // 1 to 12.
unsigned m_dayOfMonth;
unsigned m_hour; // 1 to 12.
unsigned m_minute;
diff --git a/Source/WebCore/html/DateTimeInputType.cpp b/Source/WebCore/html/DateTimeInputType.cpp
index 09b423172..1746a13cf 100644
--- a/Source/WebCore/html/DateTimeInputType.cpp
+++ b/Source/WebCore/html/DateTimeInputType.cpp
@@ -40,6 +40,14 @@
#if ENABLE(INPUT_TYPE_DATETIME)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateTimeFieldsState.h"
+#include "LocalizedStrings.h"
+#include "Localizer.h"
+#include <wtf/text/StringBuilder.h>
+#include <wtf/text/WTFString.h>
+#endif
+
namespace WebCore {
using namespace HTMLNames;
@@ -97,6 +105,61 @@ bool DateTimeInputType::isDateTimeField() const
return true;
}
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+// FIXME: It is better to share code for DateTimeInputType::formatDateTimeFieldsState()
+// and DateTimeInputLocalType::formatDateTimeFieldsState().
+String DateTimeInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+{
+ if (!dateTimeFieldsState.hasDayOfMonth() || !dateTimeFieldsState.hasMonth() || !dateTimeFieldsState.hasYear()
+ || !dateTimeFieldsState.hasHour() || !dateTimeFieldsState.hasMinute() || !dateTimeFieldsState.hasAMPM())
+ return emptyString();
+
+ if (dateTimeFieldsState.hasMillisecond() && dateTimeFieldsState.millisecond()) {
+ return String::format("%04u-%02u-%02uT%02u:%02u:%02u.%03uZ",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute(),
+ dateTimeFieldsState.hasSecond() ? dateTimeFieldsState.second() : 0,
+ dateTimeFieldsState.millisecond());
+ }
+
+ if (dateTimeFieldsState.hasSecond() && dateTimeFieldsState.second()) {
+ return String::format("%04u-%02u-%02uT%02u:%02u:%02uZ",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute(),
+ dateTimeFieldsState.second());
+ }
+
+ return String::format("%04u-%02u-%02uT%02u:%02uZ",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute());
+}
+
+void DateTimeInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
+{
+ if (shouldHaveSecondField(date)) {
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.dateTimeFormatWithSeconds();
+ layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm:ss";
+ } else {
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.dateTimeFormatWithoutSeconds();
+ layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm";
+ }
+ layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
+ layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+ layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
+ layoutParameters.placeholderForMonth = placeholderForMonthField();
+ layoutParameters.placeholderForYear = placeholderForYearField();
+}
+#endif
+
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/DateTimeInputType.h b/Source/WebCore/html/DateTimeInputType.h
index d1f4a78aa..ee3842019 100644
--- a/Source/WebCore/html/DateTimeInputType.h
+++ b/Source/WebCore/html/DateTimeInputType.h
@@ -34,15 +34,22 @@
#include "BaseDateAndTimeInputType.h"
#if ENABLE(INPUT_TYPE_DATETIME)
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
namespace WebCore {
-class DateTimeInputType : public BaseDateAndTimeInputType {
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseDateTimeInputType;
+#else
+typedef BaseDateAndTimeInputType BaseDateTimeInputType;
+#endif
+
+class DateTimeInputType : public BaseDateTimeInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
private:
- DateTimeInputType(HTMLInputElement* element) : BaseDateAndTimeInputType(element) { }
+ DateTimeInputType(HTMLInputElement* element) : BaseDateTimeInputType(element) { }
virtual const AtomicString& formControlType() const OVERRIDE;
virtual DateComponents::Type dateType() const OVERRIDE;
virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE;
@@ -50,6 +57,12 @@ private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isDateTimeField() const OVERRIDE;
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE FINAL;
+#endif
};
} // namespace WebCore
diff --git a/Source/WebCore/html/DateTimeLocalInputType.cpp b/Source/WebCore/html/DateTimeLocalInputType.cpp
index 9766b566c..b0cb95a8f 100644
--- a/Source/WebCore/html/DateTimeLocalInputType.cpp
+++ b/Source/WebCore/html/DateTimeLocalInputType.cpp
@@ -39,6 +39,14 @@
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateTimeFieldsState.h"
+#include "LocalizedStrings.h"
+#include "Localizer.h"
+#include <wtf/text/StringBuilder.h>
+#include <wtf/text/WTFString.h>
+#endif
+
namespace WebCore {
using namespace HTMLNames;
@@ -103,6 +111,61 @@ bool DateTimeLocalInputType::isDateTimeLocalField() const
return true;
}
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+// FIXME: It is better to share code for DateTimeInputType::formatDateTimeFieldsState()
+// and DateTimeInputLocalType::formatDateTimeFieldsState().
+String DateTimeLocalInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+{
+ if (!dateTimeFieldsState.hasDayOfMonth() || !dateTimeFieldsState.hasMonth() || !dateTimeFieldsState.hasYear()
+ || !dateTimeFieldsState.hasHour() || !dateTimeFieldsState.hasMinute() || !dateTimeFieldsState.hasAMPM())
+ return emptyString();
+
+ if (dateTimeFieldsState.hasMillisecond() && dateTimeFieldsState.millisecond()) {
+ return String::format("%04u-%02u-%02uT%02u:%02u:%02u.%03u",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute(),
+ dateTimeFieldsState.hasSecond() ? dateTimeFieldsState.second() : 0,
+ dateTimeFieldsState.millisecond());
+ }
+
+ if (dateTimeFieldsState.hasSecond() && dateTimeFieldsState.second()) {
+ return String::format("%04u-%02u-%02uT%02u:%02u:%02u",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute(),
+ dateTimeFieldsState.second());
+ }
+
+ return String::format("%04u-%02u-%02uT%02u:%02u",
+ dateTimeFieldsState.year(),
+ dateTimeFieldsState.month() + 1,
+ dateTimeFieldsState.dayOfMonth(),
+ dateTimeFieldsState.hour23(),
+ dateTimeFieldsState.minute());
+}
+
+void DateTimeLocalInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
+{
+ if (shouldHaveSecondField(date)) {
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.dateTimeFormatWithSeconds();
+ layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm:ss";
+ } else {
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.dateTimeFormatWithoutSeconds();
+ layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm";
+ }
+ layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
+ layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+ layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
+ layoutParameters.placeholderForMonth = placeholderForMonthField();
+ layoutParameters.placeholderForYear = placeholderForYearField();
+}
+#endif
+
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/DateTimeLocalInputType.h b/Source/WebCore/html/DateTimeLocalInputType.h
index ca40b3774..d8ec63823 100644
--- a/Source/WebCore/html/DateTimeLocalInputType.h
+++ b/Source/WebCore/html/DateTimeLocalInputType.h
@@ -31,18 +31,23 @@
#ifndef DateTimeLocalInputType_h
#define DateTimeLocalInputType_h
-#include "BaseDateAndTimeInputType.h"
-
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
namespace WebCore {
-class DateTimeLocalInputType : public BaseDateAndTimeInputType {
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseDateTimeLocalInputType;
+#else
+typedef BaseDateAndTimeInputType BaseDateTimeLocalInputType;
+#endif
+
+class DateTimeLocalInputType : public BaseDateTimeLocalInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
private:
- DateTimeLocalInputType(HTMLInputElement* element) : BaseDateAndTimeInputType(element) { }
+ DateTimeLocalInputType(HTMLInputElement* element) : BaseDateTimeLocalInputType(element) { }
virtual const AtomicString& formControlType() const OVERRIDE;
virtual DateComponents::Type dateType() const OVERRIDE;
virtual double valueAsDate() const OVERRIDE;
@@ -51,6 +56,12 @@ private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isDateTimeLocalField() const OVERRIDE;
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE FINAL;
+#endif
};
} // namespace WebCore
diff --git a/Source/WebCore/html/FormController.cpp b/Source/WebCore/html/FormController.cpp
index fbfe7b714..7f87b97ff 100644
--- a/Source/WebCore/html/FormController.cpp
+++ b/Source/WebCore/html/FormController.cpp
@@ -228,8 +228,8 @@ void SavedFormState::serializeTo(Vector<String>& stateVector) const
{
stateVector.append(String::number(m_controlStateCount));
for (FormElementStateMap::const_iterator it = m_stateForNewFormElements.begin(); it != m_stateForNewFormElements.end(); ++it) {
- const FormElementKey& key = it->first;
- const Deque<FormControlState>& queue = it->second;
+ const FormElementKey& key = it->key;
+ const Deque<FormControlState>& queue = it->value;
for (Deque<FormControlState>::const_iterator queIterator = queue.begin(); queIterator != queue.end(); ++queIterator) {
stateVector.append(key.name());
stateVector.append(key.type());
@@ -243,7 +243,7 @@ void SavedFormState::appendControlState(const AtomicString& name, const AtomicSt
FormElementKey key(name.impl(), type.impl());
FormElementStateMap::iterator it = m_stateForNewFormElements.find(key);
if (it != m_stateForNewFormElements.end())
- it->second.append(state);
+ it->value.append(state);
else {
Deque<FormControlState> stateList;
stateList.append(state);
@@ -259,10 +259,10 @@ FormControlState SavedFormState::takeControlState(const AtomicString& name, cons
FormElementStateMap::iterator it = m_stateForNewFormElements.find(FormElementKey(name.impl(), type.impl()));
if (it == m_stateForNewFormElements.end())
return FormControlState();
- ASSERT(it->second.size());
- FormControlState state = it->second.takeFirst();
+ ASSERT(it->value.size());
+ FormControlState state = it->value.takeFirst();
m_controlStateCount--;
- if (!it->second.size())
+ if (!it->value.size())
m_stateForNewFormElements.remove(it);
return state;
}
@@ -271,10 +271,10 @@ Vector<String> SavedFormState::getReferencedFilePaths() const
{
Vector<String> toReturn;
for (FormElementStateMap::const_iterator it = m_stateForNewFormElements.begin(); it != m_stateForNewFormElements.end(); ++it) {
- const FormElementKey& key = it->first;
+ const FormElementKey& key = it->key;
if (AtomicString(key.type()) != AtomicString("file"))
continue;
- const Deque<FormControlState>& queue = it->second;
+ const Deque<FormControlState>& queue = it->value;
for (Deque<FormControlState>::const_iterator queIterator = queue.begin(); queIterator != queue.end(); ++queIterator) {
const Vector<FileChooserFileInfo>& selectedFiles = HTMLInputElement::filesFromFileInputFormControlState(*queIterator);
for (size_t i = 0; i < selectedFiles.size(); ++i)
@@ -349,12 +349,12 @@ AtomicString FormKeyGenerator::formKey(const HTMLFormControlElementWithState& co
}
FormToKeyMap::const_iterator it = m_formToKeyMap.find(form);
if (it != m_formToKeyMap.end())
- return it->second;
+ return it->value;
String signature = formSignature(*form);
ASSERT(!signature.isNull());
FormSignatureToNextIndexMap::AddResult result = m_formSignatureToNextIndexMap.add(signature, 0);
- unsigned nextIndex = result.iterator->second++;
+ unsigned nextIndex = result.iterator->value++;
StringBuilder builder;
builder.append(signature);
@@ -405,8 +405,8 @@ PassOwnPtr<FormController::SavedFormStateMap> FormController::createSavedFormSta
continue;
SavedFormStateMap::AddResult result = stateMap->add(keyGenerator->formKey(*control).impl(), nullptr);
if (result.isNewEntry)
- result.iterator->second = SavedFormState::create();
- result.iterator->second->appendControlState(control->name(), control->type(), control->saveFormControlState());
+ result.iterator->value = SavedFormState::create();
+ result.iterator->value->appendControlState(control->name(), control->type(), control->saveFormControlState());
}
return stateMap.release();
}
@@ -418,8 +418,8 @@ Vector<String> FormController::formElementsState() const
stateVector.reserveInitialCapacity(m_formElementsWithState.size() * 4);
stateVector.append(formStateSignature());
for (SavedFormStateMap::const_iterator it = stateMap->begin(); it != stateMap->end(); ++it) {
- stateVector.append(it->first.get());
- it->second->serializeTo(stateVector);
+ stateVector.append(it->key.get());
+ it->value->serializeTo(stateVector);
}
bool hasOnlySignature = stateVector.size() == 1;
if (hasOnlySignature)
@@ -441,8 +441,8 @@ FormControlState FormController::takeStateForFormElement(const HTMLFormControlEl
SavedFormStateMap::iterator it = m_savedFormStateMap.find(m_formKeyGenerator->formKey(control).impl());
if (it == m_savedFormStateMap.end())
return FormControlState();
- FormControlState state = it->second->takeControlState(control.name(), control.type());
- if (it->second->isEmpty())
+ FormControlState state = it->value->takeControlState(control.name(), control.type());
+ if (it->value->isEmpty())
m_savedFormStateMap.remove(it);
return state;
}
@@ -511,7 +511,7 @@ Vector<String> FormController::getReferencedFilePaths(const Vector<String>& stat
SavedFormStateMap map;
formStatesFromStateVector(stateVector, map);
for (SavedFormStateMap::const_iterator it = map.begin(); it != map.end(); ++it)
- toReturn.append(it->second->getReferencedFilePaths());
+ toReturn.append(it->value->getReferencedFilePaths());
return toReturn;
}
diff --git a/Source/WebCore/html/HTMLAllCollection.idl b/Source/WebCore/html/HTMLAllCollection.idl
index f9c093da0..c9bc92cef 100644
--- a/Source/WebCore/html/HTMLAllCollection.idl
+++ b/Source/WebCore/html/HTMLAllCollection.idl
@@ -23,21 +23,18 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ IndexedGetter,
+ NamedGetter,
+ CustomCall,
+ MasqueradesAsUndefined,
+ GenerateIsReachable=ImplBaseRoot,
+ V8DependentLifetime
+] interface HTMLAllCollection {
+ readonly attribute unsigned long length;
+ [Custom] Node item(in [Optional=DefaultIsUndefined] unsigned long index);
+ [Custom] Node namedItem(in DOMString name);
+ // FIXME: This should return an HTMLAllCollection.
+ NodeList tags(in DOMString name);
+};
- interface [
- IndexedGetter,
- NamedGetter,
- CustomCall,
- MasqueradesAsUndefined,
- GenerateIsReachable=ImplBaseRoot,
- V8DependentLifetime
- ] HTMLAllCollection {
- readonly attribute unsigned long length;
- [Custom] Node item(in [Optional=DefaultIsUndefined] unsigned long index);
- [Custom] Node namedItem(in DOMString name);
- // FIXME: This should return an HTMLAllCollection.
- NodeList tags(in DOMString name);
- };
-
-}
diff --git a/Source/WebCore/html/HTMLAnchorElement.idl b/Source/WebCore/html/HTMLAnchorElement.idl
index 7bd174c63..df6836282 100644
--- a/Source/WebCore/html/HTMLAnchorElement.idl
+++ b/Source/WebCore/html/HTMLAnchorElement.idl
@@ -18,56 +18,53 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLAnchorElement : HTMLElement {
- attribute [Reflect] DOMString charset;
- attribute [Reflect] DOMString coords;
- attribute [Conditional=DOWNLOAD_ATTRIBUTE, Reflect] DOMString download;
- attribute [Reflect, URL] DOMString href;
- attribute [Reflect] DOMString hreflang;
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString ping;
- attribute [Reflect] DOMString rel;
- attribute [Reflect] DOMString rev;
- attribute [Reflect] DOMString shape;
- attribute [Reflect] DOMString target;
- attribute [Reflect] DOMString type;
+interface HTMLAnchorElement : HTMLElement {
+ [Reflect] attribute DOMString charset;
+ [Reflect] attribute DOMString coords;
+ [Conditional=DOWNLOAD_ATTRIBUTE, Reflect] attribute DOMString download;
+ [Reflect, URL] attribute DOMString href;
+ [Reflect] attribute DOMString hreflang;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString ping;
+ [Reflect] attribute DOMString rel;
+ [Reflect] attribute DOMString rev;
+ [Reflect] attribute DOMString shape;
+ [Reflect] attribute DOMString target;
+ [Reflect] attribute DOMString type;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- readonly attribute DOMString hash;
- readonly attribute DOMString host;
- readonly attribute DOMString hostname;
- readonly attribute DOMString pathname;
- readonly attribute DOMString port;
- readonly attribute DOMString protocol;
- readonly attribute DOMString search;
+ readonly attribute DOMString hash;
+ readonly attribute DOMString host;
+ readonly attribute DOMString hostname;
+ readonly attribute DOMString pathname;
+ readonly attribute DOMString port;
+ readonly attribute DOMString protocol;
+ readonly attribute DOMString search;
#else
- attribute [TreatNullAs=NullString] DOMString hash;
- attribute [TreatNullAs=NullString] DOMString host;
- attribute [TreatNullAs=NullString] DOMString hostname;
- attribute [TreatNullAs=NullString] DOMString pathname;
- attribute [TreatNullAs=NullString] DOMString port;
- attribute [TreatNullAs=NullString] DOMString protocol;
- attribute [TreatNullAs=NullString] DOMString search;
+ [TreatNullAs=NullString] attribute DOMString hash;
+ [TreatNullAs=NullString] attribute DOMString host;
+ [TreatNullAs=NullString] attribute DOMString hostname;
+ [TreatNullAs=NullString] attribute DOMString pathname;
+ [TreatNullAs=NullString] attribute DOMString port;
+ [TreatNullAs=NullString] attribute DOMString protocol;
+ [TreatNullAs=NullString] attribute DOMString search;
- readonly attribute [TreatNullAs=NullString] DOMString origin;
+ [TreatNullAs=NullString] readonly attribute DOMString origin;
#endif
- readonly attribute DOMString text;
+ readonly attribute DOMString text;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- [NotEnumerable] DOMString toString();
+ [NotEnumerable] DOMString toString();
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute URL absoluteLinkURL;
+ // Objective-C extension:
+ readonly attribute URL absoluteLinkURL;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLAppletElement.idl b/Source/WebCore/html/HTMLAppletElement.idl
index 8f16a400f..f80b11a5a 100644
--- a/Source/WebCore/html/HTMLAppletElement.idl
+++ b/Source/WebCore/html/HTMLAppletElement.idl
@@ -18,32 +18,29 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- CustomNamedSetter,
- JSCustomGetOwnPropertySlotAndDescriptor,
- CustomCall
- ] HTMLAppletElement : HTMLElement {
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString alt;
- attribute [Reflect] DOMString archive;
- attribute [Reflect] DOMString code;
- attribute [Reflect] DOMString codeBase;
- attribute [Reflect] DOMString height;
+[
+ CustomNamedSetter,
+ JSCustomGetOwnPropertySlotAndDescriptor,
+ CustomCall
+] interface HTMLAppletElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString alt;
+ [Reflect] attribute DOMString archive;
+ [Reflect] attribute DOMString code;
+ [Reflect] attribute DOMString codeBase;
+ [Reflect] attribute DOMString height;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [Reflect] DOMString hspace;
+ [Reflect] attribute DOMString hspace;
#else
- attribute [Reflect] long hspace;
+ [Reflect] attribute long hspace;
#endif
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString object;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString object;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [Reflect] DOMString vspace;
+ [Reflect] attribute DOMString vspace;
#else
- attribute [Reflect] long vspace;
+ [Reflect] attribute long vspace;
#endif
- attribute [Reflect] DOMString width;
- };
+ [Reflect] attribute DOMString width;
+};
-}
diff --git a/Source/WebCore/html/HTMLAreaElement.idl b/Source/WebCore/html/HTMLAreaElement.idl
index dfb9c9b5d..d0250529b 100644
--- a/Source/WebCore/html/HTMLAreaElement.idl
+++ b/Source/WebCore/html/HTMLAreaElement.idl
@@ -18,33 +18,30 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLAreaElement : HTMLElement {
- attribute [Reflect] DOMString alt;
- attribute [Reflect] DOMString coords;
- attribute [Reflect, URL] DOMString href;
- attribute [Reflect] boolean noHref;
- attribute [Reflect] DOMString ping;
- attribute [Reflect] DOMString shape;
- attribute [Reflect] DOMString target;
+interface HTMLAreaElement : HTMLElement {
+ [Reflect] attribute DOMString alt;
+ [Reflect] attribute DOMString coords;
+ [Reflect, URL] attribute DOMString href;
+ [Reflect] attribute boolean noHref;
+ [Reflect] attribute DOMString ping;
+ [Reflect] attribute DOMString shape;
+ [Reflect] attribute DOMString target;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
- // IE Extensions
- readonly attribute DOMString hash;
- readonly attribute DOMString host;
- readonly attribute DOMString hostname;
- readonly attribute DOMString pathname;
- readonly attribute DOMString port;
- readonly attribute DOMString protocol;
- readonly attribute DOMString search;
+ // IE Extensions
+ readonly attribute DOMString hash;
+ readonly attribute DOMString host;
+ readonly attribute DOMString hostname;
+ readonly attribute DOMString pathname;
+ readonly attribute DOMString port;
+ readonly attribute DOMString protocol;
+ readonly attribute DOMString search;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute URL absoluteLinkURL;
+ // Objective-C extension:
+ readonly attribute URL absoluteLinkURL;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLAudioElement.idl b/Source/WebCore/html/HTMLAudioElement.idl
index 1adf01c46..9b3f8c6af 100644
--- a/Source/WebCore/html/HTMLAudioElement.idl
+++ b/Source/WebCore/html/HTMLAudioElement.idl
@@ -23,11 +23,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ActiveDOMObject,
- Conditional=VIDEO,
- NamedConstructor=Audio(in [Optional=DefaultIsNullString] DOMString src)
- ] HTMLAudioElement : HTMLMediaElement {
- };
-}
+[
+ ActiveDOMObject,
+ Conditional=VIDEO,
+ NamedConstructor=Audio(in [Optional=DefaultIsNullString] DOMString src)
+] interface HTMLAudioElement : HTMLMediaElement {
+};
diff --git a/Source/WebCore/html/HTMLBRElement.idl b/Source/WebCore/html/HTMLBRElement.idl
index a6d215d53..c909dc1c8 100644
--- a/Source/WebCore/html/HTMLBRElement.idl
+++ b/Source/WebCore/html/HTMLBRElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLBRElement : HTMLElement {
+ [Reflect] attribute DOMString clear;
+};
- interface HTMLBRElement : HTMLElement {
- attribute [Reflect] DOMString clear;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLBaseElement.idl b/Source/WebCore/html/HTMLBaseElement.idl
index 2750c9ee8..0f63ddd19 100644
--- a/Source/WebCore/html/HTMLBaseElement.idl
+++ b/Source/WebCore/html/HTMLBaseElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLBaseElement : HTMLElement {
+ [Reflect, URL] attribute DOMString href;
+ [Reflect] attribute DOMString target;
+};
- interface HTMLBaseElement : HTMLElement {
- attribute [Reflect, URL] DOMString href;
- attribute [Reflect] DOMString target;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLBaseFontElement.idl b/Source/WebCore/html/HTMLBaseFontElement.idl
index 95bc92c37..99bb33096 100644
--- a/Source/WebCore/html/HTMLBaseFontElement.idl
+++ b/Source/WebCore/html/HTMLBaseFontElement.idl
@@ -17,15 +17,12 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLBaseFontElement : HTMLElement {
- attribute [Reflect] DOMString color;
- attribute [Reflect] DOMString face;
+interface HTMLBaseFontElement : HTMLElement {
+ [Reflect] attribute DOMString color;
+ [Reflect] attribute DOMString face;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString size; // this changed to a long, but our existing API is a string
+ [Reflect] attribute DOMString size; // this changed to a long, but our existing API is a string
#else
- attribute [Reflect] long size;
+ [Reflect] attribute long size;
#endif
- };
-}
+};
diff --git a/Source/WebCore/html/HTMLBodyElement.idl b/Source/WebCore/html/HTMLBodyElement.idl
index a6b7f567d..32a7d5095 100644
--- a/Source/WebCore/html/HTMLBodyElement.idl
+++ b/Source/WebCore/html/HTMLBodyElement.idl
@@ -18,42 +18,39 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLBodyElement : HTMLElement {
- attribute [Reflect] DOMString aLink;
- attribute [Reflect] DOMString background;
- attribute [Reflect] DOMString bgColor;
- attribute [Reflect] DOMString link;
- attribute [Reflect] DOMString text;
- attribute [Reflect] DOMString vLink;
+interface HTMLBodyElement : HTMLElement {
+ [Reflect] attribute DOMString aLink;
+ [Reflect] attribute DOMString background;
+ [Reflect] attribute DOMString bgColor;
+ [Reflect] attribute DOMString link;
+ [Reflect] attribute DOMString text;
+ [Reflect] attribute DOMString vLink;
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
- // Event handler attributes
- attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeunload;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onhashchange;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onmessage;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onoffline;
- attribute [NotEnumerable, JSWindowEventListener] EventListener ononline;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onpopstate;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onresize;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onstorage;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onunload;
+ // Event handler attributes
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onbeforeunload;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onhashchange;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onmessage;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onoffline;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener ononline;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onpopstate;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onresize;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onstorage;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onunload;
- attribute [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] EventListener onorientationchange;
+ [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
- // Overrides of Element attributes (with different implementation in bindings).
- attribute [NotEnumerable, JSWindowEventListener] EventListener onblur;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onerror;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onfocus;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onload;
+ // Overrides of Element attributes (with different implementation in bindings).
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onblur;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onerror;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onfocus;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onload;
- // Not implemented yet.
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onafterprint;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeprint;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onredo;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onundo;
+ // Not implemented yet.
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onafterprint;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeprint;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onredo;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onundo;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLButtonElement.idl b/Source/WebCore/html/HTMLButtonElement.idl
index 02e91abef..252a422f2 100644
--- a/Source/WebCore/html/HTMLButtonElement.idl
+++ b/Source/WebCore/html/HTMLButtonElement.idl
@@ -18,35 +18,32 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLButtonElement : HTMLElement {
+ [Reflect] attribute boolean autofocus;
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ [Reflect, URL] attribute DOMString formAction;
+ [TreatNullAs=NullString] attribute DOMString formEnctype;
+ [TreatNullAs=NullString] attribute DOMString formMethod;
+ [Reflect] attribute boolean formNoValidate;
+ [Reflect] attribute DOMString formTarget;
+ [Reflect] attribute DOMString name;
+ [TreatNullAs=NullString] attribute DOMString type;
+ [Reflect] attribute DOMString value;
- interface HTMLButtonElement : HTMLElement {
- attribute [Reflect] boolean autofocus;
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute [Reflect, URL] DOMString formAction;
- attribute [TreatNullAs=NullString] DOMString formEnctype;
- attribute [TreatNullAs=NullString] DOMString formMethod;
- attribute [Reflect] boolean formNoValidate;
- attribute [Reflect] DOMString formTarget;
- attribute [Reflect] DOMString name;
- attribute [TreatNullAs=NullString] DOMString type;
- attribute [Reflect] DOMString value;
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
-
- readonly attribute NodeList labels;
+ readonly attribute NodeList labels;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- void click();
+ void click();
#endif
- };
-}
+};
diff --git a/Source/WebCore/html/HTMLCanvasElement.cpp b/Source/WebCore/html/HTMLCanvasElement.cpp
index e1b9f48a1..ffc6182f5 100644
--- a/Source/WebCore/html/HTMLCanvasElement.cpp
+++ b/Source/WebCore/html/HTMLCanvasElement.cpp
@@ -46,6 +46,7 @@
#include "Page.h"
#include "RenderHTMLCanvas.h"
#include "Settings.h"
+#include "WebCoreMemoryInstrumentation.h"
#include <math.h>
#include <stdio.h>
@@ -632,4 +633,16 @@ AffineTransform HTMLCanvasElement::baseTransform() const
return m_imageBuffer->baseTransform() * transform;
}
+void HTMLCanvasElement::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::DOM);
+ HTMLElement::reportMemoryUsage(memoryObjectInfo);
+ info.addMember(m_observers);
+ info.addMember(m_context);
+ info.addMember(m_imageBuffer);
+ info.addMember(m_contextStateSaver);
+ info.addMember(m_presentedImage);
+ info.addMember(m_copiedImage);
+}
+
}
diff --git a/Source/WebCore/html/HTMLCanvasElement.h b/Source/WebCore/html/HTMLCanvasElement.h
index e80d85979..6343b50ac 100644
--- a/Source/WebCore/html/HTMLCanvasElement.h
+++ b/Source/WebCore/html/HTMLCanvasElement.h
@@ -31,6 +31,7 @@
#include "FloatRect.h"
#include "HTMLElement.h"
#include "IntSize.h"
+#include <wtf/Forward.h>
#if PLATFORM(CHROMIUM) || PLATFORM(QT)
#define DefaultInterpolationQuality InterpolationMedium
@@ -137,6 +138,8 @@ public:
float deviceScaleFactor() const { return m_deviceScaleFactor; }
+ virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
private:
HTMLCanvasElement(const QualifiedName&, Document*);
diff --git a/Source/WebCore/html/HTMLCanvasElement.idl b/Source/WebCore/html/HTMLCanvasElement.idl
index 2be96a556..9e85dca36 100644
--- a/Source/WebCore/html/HTMLCanvasElement.idl
+++ b/Source/WebCore/html/HTMLCanvasElement.idl
@@ -24,25 +24,22 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ JSGenerateToNativeObject
+] interface HTMLCanvasElement : HTMLElement {
- interface [
- JSGenerateToNativeObject
- ] HTMLCanvasElement : HTMLElement {
+ attribute long width;
+ attribute long height;
- attribute long width;
- attribute long height;
-
- [Custom] DOMString toDataURL(in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString type)
- raises(DOMException);
+ [Custom] DOMString toDataURL(in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString type)
+ raises(DOMException);
#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
- // The custom binding is needed to handle context creation attributes.
- [Custom] DOMObject getContext(in [Optional=DefaultIsUndefined] DOMString contextId);
+ // The custom binding is needed to handle context creation attributes.
+ [Custom] DOMObject getContext(in [Optional=DefaultIsUndefined] DOMString contextId);
#endif
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLCollection.cpp b/Source/WebCore/html/HTMLCollection.cpp
index 91e18a3fb..1ecb644ca 100644
--- a/Source/WebCore/html/HTMLCollection.cpp
+++ b/Source/WebCore/html/HTMLCollection.cpp
@@ -559,7 +559,7 @@ PassRefPtr<NodeList> HTMLCollection::tags(const String& name)
void HTMLCollectionCacheBase::append(NodeCacheMap& map, const AtomicString& key, Element* element)
{
- OwnPtr<Vector<Element*> >& vector = map.add(key.impl(), nullptr).iterator->second;
+ OwnPtr<Vector<Element*> >& vector = map.add(key.impl(), nullptr).iterator->value;
if (!vector)
vector = adoptPtr(new Vector<Element*>);
vector->append(element);
diff --git a/Source/WebCore/html/HTMLCollection.idl b/Source/WebCore/html/HTMLCollection.idl
index efd91c72c..8650428d0 100644
--- a/Source/WebCore/html/HTMLCollection.idl
+++ b/Source/WebCore/html/HTMLCollection.idl
@@ -18,23 +18,20 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- IndexedGetter,
- NamedGetter,
- CustomToJSObject,
- GenerateIsReachable=ImplBaseRoot,
- V8DependentLifetime,
- ObjCPolymorphic
- ] HTMLCollection {
- readonly attribute unsigned long length;
- Node item(in [Optional=DefaultIsUndefined] unsigned long index);
- [Custom] Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+[
+ IndexedGetter,
+ NamedGetter,
+ CustomToJSObject,
+ GenerateIsReachable=ImplBaseRoot,
+ V8DependentLifetime,
+ ObjCPolymorphic
+] interface HTMLCollection {
+ readonly attribute unsigned long length;
+ Node item(in [Optional=DefaultIsUndefined] unsigned long index);
+ [Custom] Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- NodeList tags(in [Optional=DefaultIsUndefined] DOMString name);
+ NodeList tags(in [Optional=DefaultIsUndefined] DOMString name);
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLDListElement.idl b/Source/WebCore/html/HTMLDListElement.idl
index 1a9326fbf..95a97ffac 100644
--- a/Source/WebCore/html/HTMLDListElement.idl
+++ b/Source/WebCore/html/HTMLDListElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLDListElement : HTMLElement {
+ [Reflect] attribute boolean compact;
+};
- interface HTMLDListElement : HTMLElement {
- attribute [Reflect] boolean compact;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLDataListElement.idl b/Source/WebCore/html/HTMLDataListElement.idl
index 7e0d69c96..13fdaa404 100644
--- a/Source/WebCore/html/HTMLDataListElement.idl
+++ b/Source/WebCore/html/HTMLDataListElement.idl
@@ -28,10 +28,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=DATALIST_ELEMENT,
- ] HTMLDataListElement : HTMLElement {
- readonly attribute HTMLCollection options;
- };
-}
+[
+ Conditional=DATALIST_ELEMENT,
+] interface HTMLDataListElement : HTMLElement {
+ readonly attribute HTMLCollection options;
+};
diff --git a/Source/WebCore/html/HTMLDetailsElement.idl b/Source/WebCore/html/HTMLDetailsElement.idl
index 087f083ff..ca3894e2f 100644
--- a/Source/WebCore/html/HTMLDetailsElement.idl
+++ b/Source/WebCore/html/HTMLDetailsElement.idl
@@ -17,11 +17,9 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
- interface [
- Conditional=DETAILS_ELEMENT
- ] HTMLDetailsElement : HTMLElement {
- attribute [Reflect] boolean open;
- };
+[
+ Conditional=DETAILS_ELEMENT
+] interface HTMLDetailsElement : HTMLElement {
+ [Reflect] attribute boolean open;
+};
-}
diff --git a/Source/WebCore/html/HTMLDialogElement.idl b/Source/WebCore/html/HTMLDialogElement.idl
index 3c70c0c53..a6df0c718 100644
--- a/Source/WebCore/html/HTMLDialogElement.idl
+++ b/Source/WebCore/html/HTMLDialogElement.idl
@@ -23,15 +23,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=DIALOG_ELEMENT
+] interface HTMLDialogElement : HTMLElement {
+ [Reflect] attribute boolean open;
+ void close() raises(DOMException);
+ void show();
+ void showModal() raises(DOMException);
+};
- interface [
- Conditional=DIALOG_ELEMENT
- ] HTMLDialogElement : HTMLElement {
- attribute [Reflect] boolean open;
- void close() raises(DOMException);
- void show();
- void showModal() raises(DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/HTMLDirectoryElement.idl b/Source/WebCore/html/HTMLDirectoryElement.idl
index b0969746a..541ae007f 100644
--- a/Source/WebCore/html/HTMLDirectoryElement.idl
+++ b/Source/WebCore/html/HTMLDirectoryElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLDirectoryElement : HTMLElement {
+ [Reflect] attribute boolean compact;
+};
- interface HTMLDirectoryElement : HTMLElement {
- attribute [Reflect] boolean compact;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLDivElement.idl b/Source/WebCore/html/HTMLDivElement.idl
index 90fb84f8f..40c8db444 100644
--- a/Source/WebCore/html/HTMLDivElement.idl
+++ b/Source/WebCore/html/HTMLDivElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLDivElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+};
- interface HTMLDivElement : HTMLElement {
- attribute [Reflect] DOMString align;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLDocument.idl b/Source/WebCore/html/HTMLDocument.idl
index de9b51d84..717301c20 100644
--- a/Source/WebCore/html/HTMLDocument.idl
+++ b/Source/WebCore/html/HTMLDocument.idl
@@ -18,48 +18,45 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ CustomNamedGetter,
+ V8CustomToJSObject
+] interface HTMLDocument : Document {
+ [JSCustom, V8Custom] void open();
+ void close();
+ [Custom] void write(in [Optional=DefaultIsUndefined] DOMString text);
+ [Custom] void writeln(in [Optional=DefaultIsUndefined] DOMString text);
- interface [
- CustomNamedGetter,
- V8CustomToJSObject
- ] HTMLDocument : Document {
- [JSCustom, V8Custom] void open();
- void close();
- [Custom] void write(in [Optional=DefaultIsUndefined] DOMString text);
- [Custom] void writeln(in [Optional=DefaultIsUndefined] DOMString text);
+ readonly attribute HTMLCollection embeds;
+ readonly attribute HTMLCollection plugins;
+ readonly attribute HTMLCollection scripts;
- readonly attribute HTMLCollection embeds;
- readonly attribute HTMLCollection plugins;
- readonly attribute HTMLCollection scripts;
-
- // Extensions
+ // Extensions
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- // FIXME: This should eventually be available (if they are wanted) for all languages.
- attribute [Custom, Deletable] HTMLAllCollection all;
+ // FIXME: This should eventually be available (if they are wanted) for all languages.
+ [Custom, Deletable] attribute HTMLAllCollection all;
#endif
- void clear();
+ void clear();
- void captureEvents();
- void releaseEvents();
+ void captureEvents();
+ void releaseEvents();
- readonly attribute long width;
- readonly attribute long height;
- attribute [TreatNullAs=NullString] DOMString dir;
- attribute [TreatNullAs=NullString] DOMString designMode;
- readonly attribute DOMString compatMode;
+ readonly attribute long width;
+ readonly attribute long height;
+ [TreatNullAs=NullString] attribute DOMString dir;
+ [TreatNullAs=NullString] attribute DOMString designMode;
+ readonly attribute DOMString compatMode;
- readonly attribute Element activeElement;
- boolean hasFocus();
+ readonly attribute Element activeElement;
+ boolean hasFocus();
- // Deprecated attributes
- attribute [TreatNullAs=NullString] DOMString bgColor;
- attribute [TreatNullAs=NullString] DOMString fgColor;
- attribute [TreatNullAs=NullString] DOMString alinkColor;
- attribute [TreatNullAs=NullString] DOMString linkColor;
- attribute [TreatNullAs=NullString] DOMString vlinkColor;
- };
+ // Deprecated attributes
+ [TreatNullAs=NullString] attribute DOMString bgColor;
+ [TreatNullAs=NullString] attribute DOMString fgColor;
+ [TreatNullAs=NullString] attribute DOMString alinkColor;
+ [TreatNullAs=NullString] attribute DOMString linkColor;
+ [TreatNullAs=NullString] attribute DOMString vlinkColor;
+};
-}
diff --git a/Source/WebCore/html/HTMLElement.idl b/Source/WebCore/html/HTMLElement.idl
index 9501d3a6a..d3206f2d1 100644
--- a/Source/WebCore/html/HTMLElement.idl
+++ b/Source/WebCore/html/HTMLElement.idl
@@ -18,80 +18,77 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ JSGenerateToNativeObject,
+ JSCustomPushEventHandlerScope,
+ V8CustomToJSObject
+] interface HTMLElement : Element {
+ // iht.com relies on id returning the empty string when no id is present.
+ // Other browsers do this as well. So we don't convert null to JS null.
+ [Reflect] attribute DOMString id;
+ [Reflect] attribute DOMString title;
+ [Reflect] attribute DOMString lang;
+ attribute boolean translate;
+ [Reflect] attribute DOMString dir;
- interface [
- JSGenerateToNativeObject,
- JSCustomPushEventHandlerScope,
- V8CustomToJSObject
- ] HTMLElement : Element {
- // iht.com relies on id returning the empty string when no id is present.
- // Other browsers do this as well. So we don't convert null to JS null.
- attribute [Reflect] DOMString id;
- attribute [Reflect] DOMString title;
- attribute [Reflect] DOMString lang;
- attribute boolean translate;
- attribute [Reflect] DOMString dir;
+ attribute long tabIndex;
+ attribute boolean draggable;
+ [Reflect] attribute DOMString webkitdropzone;
+ [Reflect] attribute boolean hidden;
+ [Reflect] attribute DOMString accessKey;
- attribute long tabIndex;
- attribute boolean draggable;
- attribute [Reflect] DOMString webkitdropzone;
- attribute [Reflect] boolean hidden;
- attribute [Reflect] DOMString accessKey;
+ // Extensions
+ [TreatNullAs=NullString] attribute DOMString innerHTML
+ setter raises(DOMException);
+ [TreatNullAs=NullString] attribute DOMString innerText
+ setter raises(DOMException);
+ [TreatNullAs=NullString] attribute DOMString outerHTML
+ setter raises(DOMException);
+ [TreatNullAs=NullString] attribute DOMString outerText
+ setter raises(DOMException);
- // Extensions
- attribute [TreatNullAs=NullString] DOMString innerHTML
- setter raises(DOMException);
- attribute [TreatNullAs=NullString] DOMString innerText
- setter raises(DOMException);
- attribute [TreatNullAs=NullString] DOMString outerHTML
- setter raises(DOMException);
- attribute [TreatNullAs=NullString] DOMString outerText
- setter raises(DOMException);
+ Element insertAdjacentElement(in [Optional=DefaultIsUndefined] DOMString where,
+ in [Optional=DefaultIsUndefined] Element element)
+ raises(DOMException);
+ void insertAdjacentHTML(in [Optional=DefaultIsUndefined] DOMString where,
+ in [Optional=DefaultIsUndefined] DOMString html)
+ raises(DOMException);
+ void insertAdjacentText(in [Optional=DefaultIsUndefined] DOMString where,
+ in [Optional=DefaultIsUndefined] DOMString text)
+ raises(DOMException);
- Element insertAdjacentElement(in [Optional=DefaultIsUndefined] DOMString where,
- in [Optional=DefaultIsUndefined] Element element)
- raises(DOMException);
- void insertAdjacentHTML(in [Optional=DefaultIsUndefined] DOMString where,
- in [Optional=DefaultIsUndefined] DOMString html)
- raises(DOMException);
- void insertAdjacentText(in [Optional=DefaultIsUndefined] DOMString where,
- in [Optional=DefaultIsUndefined] DOMString text)
- raises(DOMException);
+ readonly attribute HTMLCollection children;
- readonly attribute HTMLCollection children;
+ [TreatNullAs=NullString] attribute DOMString contentEditable
+ setter raises(DOMException);
+ readonly attribute boolean isContentEditable;
- attribute [TreatNullAs=NullString] DOMString contentEditable
- setter raises(DOMException);
- readonly attribute boolean isContentEditable;
-
- attribute boolean spellcheck;
+ attribute boolean spellcheck;
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C // No Objective-C bindings yet.
- attribute [Conditional=MICRODATA, Reflect] boolean itemScope;
- readonly attribute [Conditional=MICRODATA] DOMSettableTokenList itemType;
- attribute [Conditional=MICRODATA, Reflect, URL] DOMString itemId;
+ [Conditional=MICRODATA, Reflect] attribute boolean itemScope;
+ [Conditional=MICRODATA] readonly attribute DOMSettableTokenList itemType;
+ [Conditional=MICRODATA, Reflect, URL] attribute DOMString itemId;
- readonly attribute [Conditional=MICRODATA] DOMSettableTokenList itemRef;
- readonly attribute [Conditional=MICRODATA] DOMSettableTokenList itemProp;
+ [Conditional=MICRODATA] readonly attribute DOMSettableTokenList itemRef;
+ [Conditional=MICRODATA] readonly attribute DOMSettableTokenList itemProp;
#if defined(ENABLE_MICRODATA) && ENABLE_MICRODATA
- readonly attribute [Conditional=MICRODATA] HTMLPropertiesCollection properties;
+ [Conditional=MICRODATA] readonly attribute HTMLPropertiesCollection properties;
#endif
#endif
#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
- attribute [Conditional=MICRODATA, Custom] DOMObject itemValue
- setter raises(DOMException);
+ [Conditional=MICRODATA, Custom] attribute DOMObject itemValue
+ setter raises(DOMException);
#endif
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- readonly attribute DOMString titleDisplayString;
+ readonly attribute DOMString titleDisplayString;
#endif
- void click();
- };
+ void click();
+};
-}
diff --git a/Source/WebCore/html/HTMLEmbedElement.idl b/Source/WebCore/html/HTMLEmbedElement.idl
index b6e3c166a..3716567ed 100644
--- a/Source/WebCore/html/HTMLEmbedElement.idl
+++ b/Source/WebCore/html/HTMLEmbedElement.idl
@@ -18,33 +18,30 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- CustomNamedSetter,
- JSCustomGetOwnPropertySlotAndDescriptor,
- CustomCall
- ] HTMLEmbedElement : HTMLElement {
- attribute [Reflect] DOMString align;
+[
+ CustomNamedSetter,
+ JSCustomGetOwnPropertySlotAndDescriptor,
+ CustomCall
+] interface HTMLEmbedElement : HTMLElement {
+attribute [Reflect] DOMString align;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [Reflect] DOMString height;
+attribute [Reflect] DOMString height;
#else
- attribute [Reflect] long height;
+attribute [Reflect] long height;
#endif
- attribute [Reflect] DOMString name;
- attribute [Reflect, URL] DOMString src;
- attribute [Reflect] DOMString type;
+attribute [Reflect] DOMString name;
+attribute [Reflect, URL] DOMString src;
+attribute [Reflect] DOMString type;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [Reflect] DOMString width;
+attribute [Reflect] DOMString width;
#else
- attribute [Reflect] long width;
+attribute [Reflect] long width;
#endif
#if defined(ENABLE_SVG) && ENABLE_SVG
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
- [CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
+[CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
#endif
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLFieldSetElement.idl b/Source/WebCore/html/HTMLFieldSetElement.idl
index d67b3f647..5f3b4f385 100644
--- a/Source/WebCore/html/HTMLFieldSetElement.idl
+++ b/Source/WebCore/html/HTMLFieldSetElement.idl
@@ -17,21 +17,18 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLFieldSetElement : HTMLElement {
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ [Reflect] attribute DOMString name;
- interface HTMLFieldSetElement : HTMLElement {
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute [Reflect] DOMString name;
+ readonly attribute DOMString type;
- readonly attribute DOMString type;
+ readonly attribute HTMLCollection elements;
- readonly attribute HTMLCollection elements;
-
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- };
-}
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+};
diff --git a/Source/WebCore/html/HTMLFontElement.idl b/Source/WebCore/html/HTMLFontElement.idl
index 141816d1d..d2da3a9eb 100644
--- a/Source/WebCore/html/HTMLFontElement.idl
+++ b/Source/WebCore/html/HTMLFontElement.idl
@@ -17,12 +17,9 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLFontElement : HTMLElement {
+ [Reflect] attribute DOMString color;
+ [Reflect] attribute DOMString face;
+ [Reflect] attribute DOMString size;
+};
- interface HTMLFontElement : HTMLElement {
- attribute [Reflect] DOMString color;
- attribute [Reflect] DOMString face;
- attribute [Reflect] DOMString size;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLFormElement.cpp b/Source/WebCore/html/HTMLFormElement.cpp
index 947f4d92b..0a251415f 100644
--- a/Source/WebCore/html/HTMLFormElement.cpp
+++ b/Source/WebCore/html/HTMLFormElement.cpp
@@ -74,7 +74,6 @@ HTMLFormElement::HTMLFormElement(const QualifiedName& tagName, Document* documen
, m_isSubmittingOrPreparingForSubmission(false)
, m_shouldSubmit(false)
, m_isInResetFunction(false)
- , m_wasMalformed(false)
, m_wasDemoted(false)
{
ASSERT(hasTagName(formTag));
@@ -687,4 +686,10 @@ void HTMLFormElement::finishParsingChildren()
document()->formController()->restoreControlStateIn(*this);
}
+void HTMLFormElement::copyNonAttributePropertiesFromElement(const Element& source)
+{
+ m_wasDemoted = static_cast<const HTMLFormElement&>(source).m_wasDemoted;
+ HTMLElement::copyNonAttributePropertiesFromElement(source);
+}
+
} // namespace
diff --git a/Source/WebCore/html/HTMLFormElement.h b/Source/WebCore/html/HTMLFormElement.h
index 9d4739423..bf28cca3f 100644
--- a/Source/WebCore/html/HTMLFormElement.h
+++ b/Source/WebCore/html/HTMLFormElement.h
@@ -73,11 +73,6 @@ public:
void submitFromJavaScript();
void reset();
- // Used to indicate a malformed state to keep from applying the bottom margin of the form.
- // FIXME: Would probably be better to call this wasUnclosed; that's more specific.
- void setMalformed(bool malformed) { m_wasMalformed = malformed; }
- bool isMalformed() const { return m_wasMalformed; }
-
void setDemoted(bool demoted) { m_wasDemoted = demoted; }
void submitImplicitly(Event*, bool fromImplicitSubmissionTrigger);
@@ -133,6 +128,8 @@ private:
virtual bool shouldRegisterAsNamedItem() const OVERRIDE { return true; }
+ virtual void copyNonAttributePropertiesFromElement(const Element&) OVERRIDE;
+
void submit(Event*, bool activateSubmitButton, bool processingUserGesture, FormSubmissionTrigger);
unsigned formElementIndexWithFormAttribute(Element*, unsigned rangeStart, unsigned rangeEnd);
@@ -164,7 +161,6 @@ private:
bool m_isInResetFunction;
- bool m_wasMalformed;
bool m_wasDemoted;
};
diff --git a/Source/WebCore/html/HTMLFormElement.idl b/Source/WebCore/html/HTMLFormElement.idl
index b6a536c08..86a6f74c6 100644
--- a/Source/WebCore/html/HTMLFormElement.idl
+++ b/Source/WebCore/html/HTMLFormElement.idl
@@ -18,31 +18,28 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ IndexedGetter,
+ CustomNamedGetter
+] interface HTMLFormElement : HTMLElement {
+ [Reflect=accept_charset] attribute DOMString acceptCharset;
+ [Reflect, URL] attribute DOMString action;
+ [Reflect] attribute DOMString autocomplete;
+ [TreatNullAs=NullString] attribute DOMString enctype;
+ [TreatNullAs=NullString] attribute DOMString encoding;
+ [TreatNullAs=NullString] attribute DOMString method;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute boolean noValidate;
+ [Reflect] attribute DOMString target;
- interface [
- IndexedGetter,
- CustomNamedGetter
- ] HTMLFormElement : HTMLElement {
- attribute [Reflect=accept_charset] DOMString acceptCharset;
- attribute [Reflect, URL] DOMString action;
- attribute [Reflect] DOMString autocomplete;
- attribute [TreatNullAs=NullString] DOMString enctype;
- attribute [TreatNullAs=NullString] DOMString encoding;
- attribute [TreatNullAs=NullString] DOMString method;
- attribute [Reflect] DOMString name;
- attribute [Reflect] boolean noValidate;
- attribute [Reflect] DOMString target;
-
- readonly attribute HTMLCollection elements;
- readonly attribute long length;
+ readonly attribute HTMLCollection elements;
+ readonly attribute long length;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- [ImplementedAs=submitFromJavaScript] void submit();
+ [ImplementedAs=submitFromJavaScript] void submit();
#else
- void submit();
+ void submit();
#endif
- void reset();
- boolean checkValidity();
- };
-}
+ void reset();
+ boolean checkValidity();
+};
diff --git a/Source/WebCore/html/HTMLFrameElement.idl b/Source/WebCore/html/HTMLFrameElement.idl
index f40f7b1c5..e3747da5d 100644
--- a/Source/WebCore/html/HTMLFrameElement.idl
+++ b/Source/WebCore/html/HTMLFrameElement.idl
@@ -18,37 +18,34 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLFrameElement : HTMLElement {
- interface HTMLFrameElement : HTMLElement {
+ [Reflect] attribute DOMString frameBorder;
+ [Reflect] attribute DOMString longDesc;
+ [Reflect] attribute DOMString marginHeight;
+ [Reflect] attribute DOMString marginWidth;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute boolean noResize;
+ [Reflect] attribute DOMString scrolling;
+ [Reflect, URL] attribute DOMString src;
- attribute [Reflect] DOMString frameBorder;
- attribute [Reflect] DOMString longDesc;
- attribute [Reflect] DOMString marginHeight;
- attribute [Reflect] DOMString marginWidth;
- attribute [Reflect] DOMString name;
- attribute [Reflect] boolean noResize;
- attribute [Reflect] DOMString scrolling;
- attribute [Reflect, URL] DOMString src;
+ // Introduced in DOM Level 2:
+ [CheckSecurityForNode] readonly attribute Document contentDocument;
- // Introduced in DOM Level 2:
- readonly attribute [CheckSecurityForNode] Document contentDocument;
-
- // Extensions
- readonly attribute DOMWindow contentWindow;
+ // Extensions
+ readonly attribute DOMWindow contentWindow;
#if defined(ENABLE_SVG) && ENABLE_SVG
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
- [CheckSecurityForNode] SVGDocument getSVGDocument()
- raises(DOMException);
+ [CheckSecurityForNode] SVGDocument getSVGDocument()
+ raises(DOMException);
#endif
#endif
- attribute [TreatNullAs=NullString, CustomSetter] DOMString location;
+ [TreatNullAs=NullString, CustomSetter] attribute DOMString location;
- readonly attribute long width;
- readonly attribute long height;
+ readonly attribute long width;
+ readonly attribute long height;
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLFrameElementBase.cpp b/Source/WebCore/html/HTMLFrameElementBase.cpp
index eaa354994..d7882f37c 100644
--- a/Source/WebCore/html/HTMLFrameElementBase.cpp
+++ b/Source/WebCore/html/HTMLFrameElementBase.cpp
@@ -67,7 +67,7 @@ bool HTMLFrameElementBase::isURLAllowed() const
}
if (Frame* parentFrame = document()->frame()) {
- if (parentFrame->page()->frameCount() >= Page::maxNumberOfFrames)
+ if (parentFrame->page()->subframeCount() >= Page::maxNumberOfFrames)
return false;
}
diff --git a/Source/WebCore/html/HTMLFrameSetElement.idl b/Source/WebCore/html/HTMLFrameSetElement.idl
index a3d4b3ec4..b4fa43da3 100644
--- a/Source/WebCore/html/HTMLFrameSetElement.idl
+++ b/Source/WebCore/html/HTMLFrameSetElement.idl
@@ -18,40 +18,37 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- CustomNamedGetter
- ] HTMLFrameSetElement : HTMLElement {
- attribute [Reflect] DOMString cols;
- attribute [Reflect] DOMString rows;
+[
+ CustomNamedGetter
+] interface HTMLFrameSetElement : HTMLElement {
+ [Reflect] attribute DOMString cols;
+ [Reflect] attribute DOMString rows;
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
- // Event handler attributes
- attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeunload;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onhashchange;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onmessage;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onoffline;
- attribute [NotEnumerable, JSWindowEventListener] EventListener ononline;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onpopstate;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onresize;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onstorage;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onunload;
+ // Event handler attributes
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onbeforeunload;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onhashchange;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onmessage;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onoffline;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener ononline;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onpopstate;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onresize;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onstorage;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onunload;
- attribute [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] EventListener onorientationchange;
+ [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
- // Overrides of Element attributes (with different implementation in bindings).
- attribute [NotEnumerable, JSWindowEventListener] EventListener onblur;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onerror;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onfocus;
- attribute [NotEnumerable, JSWindowEventListener] EventListener onload;
+ // Overrides of Element attributes (with different implementation in bindings).
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onblur;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onerror;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onfocus;
+ [NotEnumerable, JSWindowEventListener] attribute EventListener onload;
- // Not implemented yet.
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onafterprint;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeprint;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onredo;
- // attribute [NotEnumerable, JSWindowEventListener] EventListener onundo;
+ // Not implemented yet.
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onafterprint;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onbeforeprint;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onredo;
+ // attribute [NotEnumerable, JSWindowEventListener] EventListener onundo;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLHRElement.idl b/Source/WebCore/html/HTMLHRElement.idl
index 23a57da10..babe467cd 100644
--- a/Source/WebCore/html/HTMLHRElement.idl
+++ b/Source/WebCore/html/HTMLHRElement.idl
@@ -17,13 +17,10 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLHRElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute boolean noShade;
+ [Reflect] attribute DOMString size;
+ [Reflect] attribute DOMString width;
+};
- interface HTMLHRElement : HTMLElement {
- attribute [Reflect] DOMString align;
- attribute [Reflect] boolean noShade;
- attribute [Reflect] DOMString size;
- attribute [Reflect] DOMString width;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLHeadElement.idl b/Source/WebCore/html/HTMLHeadElement.idl
index 59bdbf0e7..6a784bdd7 100644
--- a/Source/WebCore/html/HTMLHeadElement.idl
+++ b/Source/WebCore/html/HTMLHeadElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLHeadElement : HTMLElement {
+ [Reflect] attribute DOMString profile;
+};
- interface HTMLHeadElement : HTMLElement {
- attribute [Reflect] DOMString profile;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLHeadingElement.idl b/Source/WebCore/html/HTMLHeadingElement.idl
index e419c1c7d..288f43902 100644
--- a/Source/WebCore/html/HTMLHeadingElement.idl
+++ b/Source/WebCore/html/HTMLHeadingElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLHeadingElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+};
- interface HTMLHeadingElement : HTMLElement {
- attribute [Reflect] DOMString align;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLHtmlElement.idl b/Source/WebCore/html/HTMLHtmlElement.idl
index 03c661cc8..430cdc6f8 100644
--- a/Source/WebCore/html/HTMLHtmlElement.idl
+++ b/Source/WebCore/html/HTMLHtmlElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLHtmlElement : HTMLElement {
+ [Reflect] attribute DOMString version;
+ [Reflect, URL] attribute DOMString manifest;
+};
- interface HTMLHtmlElement : HTMLElement {
- attribute [Reflect] DOMString version;
- attribute [Reflect, URL] DOMString manifest;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLIFrameElement.idl b/Source/WebCore/html/HTMLIFrameElement.idl
index 2dbf38dbe..eea2fb72e 100644
--- a/Source/WebCore/html/HTMLIFrameElement.idl
+++ b/Source/WebCore/html/HTMLIFrameElement.idl
@@ -18,35 +18,32 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLIFrameElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString frameBorder;
+ [Reflect] attribute DOMString height;
+ [Reflect] attribute DOMString longDesc;
+ [Reflect] attribute DOMString marginHeight;
+ [Reflect] attribute DOMString marginWidth;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString sandbox;
+ [Reflect, Conditional=IFRAME_SEAMLESS] attribute boolean seamless;
+ [Reflect] attribute DOMString scrolling;
+ [Reflect, URL] attribute DOMString src;
+ [Reflect] attribute DOMString srcdoc;
+ [Reflect] attribute DOMString width;
- interface HTMLIFrameElement : HTMLElement {
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString frameBorder;
- attribute [Reflect] DOMString height;
- attribute [Reflect] DOMString longDesc;
- attribute [Reflect] DOMString marginHeight;
- attribute [Reflect] DOMString marginWidth;
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString sandbox;
- attribute [Reflect, Conditional=IFRAME_SEAMLESS] boolean seamless;
- attribute [Reflect] DOMString scrolling;
- attribute [Reflect, URL] DOMString src;
- attribute [Reflect] DOMString srcdoc;
- attribute [Reflect] DOMString width;
+ // Introduced in DOM Level 2:
+ [CheckSecurityForNode] readonly attribute Document contentDocument;
- // Introduced in DOM Level 2:
- readonly attribute [CheckSecurityForNode] Document contentDocument;
-
- // Extensions
- readonly attribute DOMWindow contentWindow;
+ // Extensions
+ readonly attribute DOMWindow contentWindow;
#if defined(ENABLE_SVG) && ENABLE_SVG
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
- [CheckSecurityForNode] SVGDocument getSVGDocument()
- raises(DOMException);
+ [CheckSecurityForNode] SVGDocument getSVGDocument()
+ raises(DOMException);
#endif
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLImageElement.idl b/Source/WebCore/html/HTMLImageElement.idl
index d893b6c0c..ce1ea1799 100644
--- a/Source/WebCore/html/HTMLImageElement.idl
+++ b/Source/WebCore/html/HTMLImageElement.idl
@@ -18,38 +18,35 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- JSGenerateToNativeObject
- ] HTMLImageElement : HTMLElement {
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString alt;
- attribute [Reflect] DOMString border;
- attribute [Reflect] DOMString crossOrigin;
- attribute long height;
- attribute [Reflect] long hspace;
- attribute [Reflect] boolean isMap;
- attribute [Reflect, URL] DOMString longDesc;
- attribute [Reflect, URL] DOMString src;
- attribute [Reflect] DOMString useMap;
- attribute [Reflect] long vspace;
- attribute long width;
-
- // Extensions
- readonly attribute boolean complete;
- attribute [Reflect,URL] DOMString lowsrc;
- readonly attribute long naturalHeight;
- readonly attribute long naturalWidth;
- readonly attribute long x;
- readonly attribute long y;
+[
+ JSGenerateToNativeObject
+] interface HTMLImageElement : HTMLElement {
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString alt;
+ [Reflect] attribute DOMString border;
+ [Reflect] attribute DOMString crossOrigin;
+ attribute long height;
+ [Reflect] attribute long hspace;
+ [Reflect] attribute boolean isMap;
+ [Reflect, URL] attribute DOMString longDesc;
+ [Reflect, URL] attribute DOMString src;
+ [Reflect] attribute DOMString useMap;
+ [Reflect] attribute long vspace;
+ attribute long width;
+
+ // Extensions
+ readonly attribute boolean complete;
+ [Reflect,URL] attribute DOMString lowsrc;
+ readonly attribute long naturalHeight;
+ readonly attribute long naturalWidth;
+ readonly attribute long x;
+ readonly attribute long y;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute DOMString altDisplayString;
- readonly attribute URL absoluteImageURL;
+ // Objective-C extension:
+ readonly attribute DOMString altDisplayString;
+ readonly attribute URL absoluteImageURL;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLInputElement.cpp b/Source/WebCore/html/HTMLInputElement.cpp
index d1ea76cae..027f60f5e 100644
--- a/Source/WebCore/html/HTMLInputElement.cpp
+++ b/Source/WebCore/html/HTMLInputElement.cpp
@@ -1318,6 +1318,14 @@ void HTMLInputElement::setSize(unsigned size)
setAttribute(sizeAttr, String::number(size));
}
+void HTMLInputElement::setSize(unsigned size, ExceptionCode& ec)
+{
+ if (!size)
+ ec = INDEX_SIZE_ERR;
+ else
+ setSize(size);
+}
+
KURL HTMLInputElement::src() const
{
return document()->completeURL(fastGetAttribute(srcAttr));
diff --git a/Source/WebCore/html/HTMLInputElement.h b/Source/WebCore/html/HTMLInputElement.h
index 7fe0d6c14..4184dc977 100644
--- a/Source/WebCore/html/HTMLInputElement.h
+++ b/Source/WebCore/html/HTMLInputElement.h
@@ -208,6 +208,7 @@ public:
String alt() const;
void setSize(unsigned);
+ void setSize(unsigned, ExceptionCode&);
KURL src() const;
diff --git a/Source/WebCore/html/HTMLInputElement.idl b/Source/WebCore/html/HTMLInputElement.idl
index 879a34f57..3c360477a 100644
--- a/Source/WebCore/html/HTMLInputElement.idl
+++ b/Source/WebCore/html/HTMLInputElement.idl
@@ -19,103 +19,100 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLInputElement : HTMLElement {
- attribute [Reflect] DOMString accept;
- attribute [Reflect] DOMString alt;
- attribute [Reflect] DOMString autocomplete;
- attribute [Reflect] boolean autofocus;
- attribute [Reflect=checked] boolean defaultChecked;
- attribute boolean checked;
- attribute [Reflect] DOMString dirName;
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute FileList files;
- attribute [Reflect, URL] DOMString formAction;
- attribute [TreatNullAs=NullString] DOMString formEnctype;
- attribute [TreatNullAs=NullString] DOMString formMethod;
- attribute [Reflect] boolean formNoValidate;
- attribute [Reflect] DOMString formTarget;
- attribute unsigned long height;
- attribute boolean indeterminate;
- readonly attribute [Conditional=DATALIST_ELEMENT] HTMLElement list;
- attribute [Reflect] DOMString max;
- attribute long maxLength setter raises(DOMException);
- attribute [Reflect] DOMString min;
- attribute [Reflect] boolean multiple;
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString pattern;
- attribute [Reflect] DOMString placeholder;
- attribute [Reflect] boolean readOnly;
- attribute [Reflect] boolean required;
+interface HTMLInputElement : HTMLElement {
+ [Reflect] attribute DOMString accept;
+ [Reflect] attribute DOMString alt;
+ [Reflect] attribute DOMString autocomplete;
+ [Reflect] attribute boolean autofocus;
+ [Reflect=checked] attribute boolean defaultChecked;
+ attribute boolean checked;
+ [Reflect] attribute DOMString dirName;
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ attribute FileList files;
+ [Reflect, URL] attribute DOMString formAction;
+ [TreatNullAs=NullString] attribute DOMString formEnctype;
+ [TreatNullAs=NullString] attribute DOMString formMethod;
+ [Reflect] attribute boolean formNoValidate;
+ [Reflect] attribute DOMString formTarget;
+ attribute unsigned long height;
+ attribute boolean indeterminate;
+ [Conditional=DATALIST_ELEMENT] readonly attribute HTMLElement list;
+ [Reflect] attribute DOMString max;
+ attribute long maxLength setter raises(DOMException);
+ [Reflect] attribute DOMString min;
+ [Reflect] attribute boolean multiple;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString pattern;
+ [Reflect] attribute DOMString placeholder;
+ [Reflect] attribute boolean readOnly;
+ [Reflect] attribute boolean required;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [ObjCImplementedAsUnsignedLong] DOMString size; // DOM level 2 changed this to a long, but ObjC API is a string
+ [ObjCImplementedAsUnsignedLong] attribute DOMString size; // DOM level 2 changed this to a long, but ObjC API is a string
#else
- attribute unsigned long size; // Changed string -> long -> unsigned long
+ attribute unsigned long size setter raises(DOMException); // Changed string -> long -> unsigned long
#endif
- attribute [Reflect, URL] DOMString src;
- attribute [Reflect] DOMString step;
- attribute [TreatNullAs=NullString] DOMString type; // readonly dropped as part of DOM level 2
- attribute [TreatNullAs=NullString] DOMString defaultValue;
- attribute [TreatNullAs=NullString] DOMString value;
+ [Reflect, URL] attribute DOMString src;
+ [Reflect] attribute DOMString step;
+ [TreatNullAs=NullString] attribute DOMString type; // readonly dropped as part of DOM level 2
+ [TreatNullAs=NullString] attribute DOMString defaultValue;
+ [TreatNullAs=NullString] attribute DOMString value;
#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
- attribute Date valueAsDate setter raises(DOMException);
+ attribute Date valueAsDate setter raises(DOMException);
#endif
- attribute double valueAsNumber setter raises(DOMException);
+ attribute double valueAsNumber setter raises(DOMException);
- void stepUp(in [Optional] long n) raises(DOMException);
- void stepDown(in [Optional] long n) raises(DOMException);
+ void stepUp(in [Optional] long n) raises(DOMException);
+ void stepDown(in [Optional] long n) raises(DOMException);
- attribute unsigned long width;
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+ attribute unsigned long width;
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute NodeList labels;
+ readonly attribute NodeList labels;
- void select();
- attribute [Custom] long selectionStart;
- attribute [Custom] long selectionEnd;
- attribute [Custom] DOMString selectionDirection;
+ void select();
+ [Custom] attribute long selectionStart;
+ [Custom] attribute long selectionEnd;
+ [Custom] attribute DOMString selectionDirection;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- [Custom] void setSelectionRange(in long start, in long end);
+ [Custom] void setSelectionRange(in long start, in long end);
#else
- [Custom] void setSelectionRange(in [Optional=DefaultIsUndefined] long start,
- in [Optional=DefaultIsUndefined] long end,
- in [Optional] DOMString direction);
+ [Custom] void setSelectionRange(in [Optional=DefaultIsUndefined] long start,
+ in [Optional=DefaultIsUndefined] long end,
+ in [Optional] DOMString direction);
#endif
- // Non-standard attributes
- attribute [Reflect] DOMString align;
- attribute [Conditional=DIRECTORY_UPLOAD, Reflect] boolean webkitdirectory;
- attribute [Reflect] DOMString useMap;
- attribute [Reflect] boolean incremental;
- attribute [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] boolean webkitSpeech;
- attribute [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] boolean webkitGrammar;
- attribute [Conditional=INPUT_SPEECH, NotEnumerable] EventListener onwebkitspeechchange;
+ // Non-standard attributes
+ [Reflect] attribute DOMString align;
+ [Conditional=DIRECTORY_UPLOAD, Reflect] attribute boolean webkitdirectory;
+ [Reflect] attribute DOMString useMap;
+ [Reflect] attribute boolean incremental;
+ [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] attribute boolean webkitSpeech;
+ [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] attribute boolean webkitGrammar;
+ [Conditional=INPUT_SPEECH, NotEnumerable] attribute EventListener onwebkitspeechchange;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- void click();
+ void click();
#endif
#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
- void setValueForUser(in [TreatNullAs=NullString] DOMString value);
+ void setValueForUser(in [TreatNullAs=NullString] DOMString value);
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute DOMString altDisplayString;
- readonly attribute URL absoluteImageURL;
+ // Objective-C extension:
+ readonly attribute DOMString altDisplayString;
+ readonly attribute URL absoluteImageURL;
#endif
- // See http://www.w3.org/TR/html-media-capture/
- attribute [Conditional=MEDIA_CAPTURE] DOMString capture;
- };
-}
+ // See http://www.w3.org/TR/html-media-capture/
+ [Conditional=MEDIA_CAPTURE] attribute DOMString capture;
+};
diff --git a/Source/WebCore/html/HTMLIntentElement.idl b/Source/WebCore/html/HTMLIntentElement.idl
index 608c5acdd..f1df9be90 100644
--- a/Source/WebCore/html/HTMLIntentElement.idl
+++ b/Source/WebCore/html/HTMLIntentElement.idl
@@ -23,16 +23,13 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=WEB_INTENTS_TAG
+] interface HTMLIntentElement : HTMLElement {
+ [Reflect] attribute DOMString action;
+ [Reflect] attribute DOMString type;
+ [Reflect, URL] attribute DOMString href;
+ [Reflect] attribute DOMString title;
+ [Reflect] attribute DOMString disposition;
+};
- interface [
- Conditional=WEB_INTENTS_TAG
- ] HTMLIntentElement : HTMLElement {
- attribute [Reflect] DOMString action;
- attribute [Reflect] DOMString type;
- attribute [Reflect, URL] DOMString href;
- attribute [Reflect] DOMString title;
- attribute [Reflect] DOMString disposition;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLKeygenElement.idl b/Source/WebCore/html/HTMLKeygenElement.idl
index fc6f25c81..466d7925f 100644
--- a/Source/WebCore/html/HTMLKeygenElement.idl
+++ b/Source/WebCore/html/HTMLKeygenElement.idl
@@ -28,25 +28,22 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+interface HTMLKeygenElement : HTMLElement {
+ [Reflect] attribute boolean autofocus;
+ [Reflect] attribute DOMString challenge;
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ [Reflect] attribute DOMString keytype;
+ [Reflect] attribute DOMString name;
- interface HTMLKeygenElement : HTMLElement {
- attribute [Reflect] boolean autofocus;
- attribute [Reflect] DOMString challenge;
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute [Reflect] DOMString keytype;
- attribute [Reflect] DOMString name;
+ readonly attribute DOMString type;
- readonly attribute DOMString type;
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+ readonly attribute NodeList labels;
+};
- readonly attribute NodeList labels;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLLIElement.cpp b/Source/WebCore/html/HTMLLIElement.cpp
index 65f65dc9e..189342099 100644
--- a/Source/WebCore/html/HTMLLIElement.cpp
+++ b/Source/WebCore/html/HTMLLIElement.cpp
@@ -96,9 +96,9 @@ void HTMLLIElement::attach()
// Find the enclosing list node.
Node* listNode = 0;
- ComposedShadowTreeParentWalker walker(this);
+ ComposedShadowTreeWalker walker(this);
while (!listNode) {
- walker.parentIncludingInsertionPointAndShadowRoot();
+ walker.parent();
if (!walker.get())
break;
if (walker.get()->hasTagName(ulTag) || walker.get()->hasTagName(olTag))
diff --git a/Source/WebCore/html/HTMLLIElement.idl b/Source/WebCore/html/HTMLLIElement.idl
index 2dc541b18..ba3eaaebd 100644
--- a/Source/WebCore/html/HTMLLIElement.idl
+++ b/Source/WebCore/html/HTMLLIElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLLIElement : HTMLElement {
+ [Reflect] attribute DOMString type;
+ [Reflect] attribute long value;
+};
- interface HTMLLIElement : HTMLElement {
- attribute [Reflect] DOMString type;
- attribute [Reflect] long value;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLLabelElement.idl b/Source/WebCore/html/HTMLLabelElement.idl
index bf79680f8..92e5f4ba7 100644
--- a/Source/WebCore/html/HTMLLabelElement.idl
+++ b/Source/WebCore/html/HTMLLabelElement.idl
@@ -18,15 +18,12 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLLabelElement : HTMLElement {
- readonly attribute HTMLFormElement form;
- attribute [Reflect=for] DOMString htmlFor;
- readonly attribute HTMLElement control;
+interface HTMLLabelElement : HTMLElement {
+ readonly attribute HTMLFormElement form;
+ [Reflect=for] attribute DOMString htmlFor;
+ readonly attribute HTMLElement control;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLLegendElement.idl b/Source/WebCore/html/HTMLLegendElement.idl
index bf755a5bb..749745e4b 100644
--- a/Source/WebCore/html/HTMLLegendElement.idl
+++ b/Source/WebCore/html/HTMLLegendElement.idl
@@ -18,14 +18,11 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLLegendElement : HTMLElement {
- readonly attribute HTMLFormElement form;
- attribute [Reflect] DOMString align;
+interface HTMLLegendElement : HTMLElement {
+ readonly attribute HTMLFormElement form;
+ [Reflect] attribute DOMString align;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLLinkElement.idl b/Source/WebCore/html/HTMLLinkElement.idl
index 8d16f25e8..0a4e34759 100644
--- a/Source/WebCore/html/HTMLLinkElement.idl
+++ b/Source/WebCore/html/HTMLLinkElement.idl
@@ -19,29 +19,26 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLLinkElement : HTMLElement {
- attribute [Reflect] boolean disabled;
- attribute [Reflect] DOMString charset;
- attribute [Reflect, URL] DOMString href;
- attribute [Reflect] DOMString hreflang;
- attribute [Reflect] DOMString media;
- attribute [Reflect] DOMString rel;
- attribute [Reflect] DOMString rev;
+interface HTMLLinkElement : HTMLElement {
+ [Reflect] attribute boolean disabled;
+ [Reflect] attribute DOMString charset;
+ [Reflect, URL] attribute DOMString href;
+ [Reflect] attribute DOMString hreflang;
+ [Reflect] attribute DOMString media;
+ [Reflect] attribute DOMString rel;
+ [Reflect] attribute DOMString rev;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute [Custom] DOMSettableTokenList sizes;
+ [Custom] attribute DOMSettableTokenList sizes;
#endif
- attribute [Reflect] DOMString target;
- attribute [Reflect] DOMString type;
+ [Reflect] attribute DOMString target;
+ [Reflect] attribute DOMString type;
- // DOM Level 2 Style
- readonly attribute StyleSheet sheet;
+ // DOM Level 2 Style
+ readonly attribute StyleSheet sheet;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute URL absoluteLinkURL;
+ // Objective-C extension:
+ readonly attribute URL absoluteLinkURL;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLMapElement.idl b/Source/WebCore/html/HTMLMapElement.idl
index 7811c9a9f..01dcae007 100644
--- a/Source/WebCore/html/HTMLMapElement.idl
+++ b/Source/WebCore/html/HTMLMapElement.idl
@@ -18,11 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLMapElement : HTMLElement {
+ readonly attribute HTMLCollection areas;
+ [Reflect] attribute DOMString name;
+};
- interface HTMLMapElement : HTMLElement {
- readonly attribute HTMLCollection areas;
- attribute [Reflect] DOMString name;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLMarqueeElement.idl b/Source/WebCore/html/HTMLMarqueeElement.idl
index 3174facbc..41bd01906 100644
--- a/Source/WebCore/html/HTMLMarqueeElement.idl
+++ b/Source/WebCore/html/HTMLMarqueeElement.idl
@@ -17,28 +17,25 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLMarqueeElement : HTMLElement {
+ void start();
+ void stop();
+
+ [Reflect] attribute DOMString behavior;
+ [Reflect] attribute DOMString bgColor;
+ [Reflect] attribute DOMString direction;
+ [Reflect] attribute DOMString height;
+ [Reflect] attribute unsigned long hspace;
+ attribute long loop setter raises(DOMException);
+ attribute long scrollAmount setter raises(DOMException);
+ attribute long scrollDelay setter raises(DOMException);
+ [Reflect] attribute boolean trueSpeed;
+ [Reflect] attribute unsigned long vspace;
+ [Reflect] attribute DOMString width;
- interface HTMLMarqueeElement : HTMLElement {
- void start();
- void stop();
-
- attribute [Reflect] DOMString behavior;
- attribute [Reflect] DOMString bgColor;
- attribute [Reflect] DOMString direction;
- attribute [Reflect] DOMString height;
- attribute [Reflect] unsigned long hspace;
- attribute long loop setter raises(DOMException);
- attribute long scrollAmount setter raises(DOMException);
- attribute long scrollDelay setter raises(DOMException);
- attribute [Reflect] boolean trueSpeed;
- attribute [Reflect] unsigned long vspace;
- attribute [Reflect] DOMString width;
-
- // FIXME: Implement the following event handler attributes
- // https://bugs.webkit.org/show_bug.cgi?id=49788
- // attribute EventListener onbounce;
- // attribute EventListener onfinish;
- // attribute EventListener onstart;
- };
-}
+ // FIXME: Implement the following event handler attributes
+ // https://bugs.webkit.org/show_bug.cgi?id=49788
+ // attribute EventListener onbounce;
+ // attribute EventListener onfinish;
+ // attribute EventListener onstart;
+};
diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp
index 66b8c4655..ebeee1b40 100644
--- a/Source/WebCore/html/HTMLMediaElement.cpp
+++ b/Source/WebCore/html/HTMLMediaElement.cpp
@@ -756,7 +756,7 @@ void HTMLMediaElement::loadInternal()
// Some of the code paths below this function dispatch the BeforeLoad event. This ASSERT helps
// us catch those bugs more quickly without needing all the branches to align to actually
// trigger the event.
- ASSERT(!eventDispatchForbidden());
+ ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
// If we can't start a load right away, start it later.
Page* page = document()->page();
@@ -1834,8 +1834,14 @@ void HTMLMediaElement::mediaPlayerKeyMessage(MediaPlayer*, const String& keySyst
m_asyncEventQueue->enqueueEvent(event.release());
}
-void HTMLMediaElement::mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength)
+bool HTMLMediaElement::mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength)
{
+ if (!hasEventListeners(eventNames().webkitneedkeyEvent)) {
+ m_error = MediaError::create(MediaError::MEDIA_ERR_ENCRYPTED);
+ scheduleEvent(eventNames().errorEvent);
+ return false;
+ }
+
MediaKeyEventInit initializer;
initializer.keySystem = keySystem;
initializer.sessionId = sessionId;
@@ -1846,6 +1852,7 @@ void HTMLMediaElement::mediaPlayerKeyNeeded(MediaPlayer*, const String& keySyste
RefPtr<Event> event = MediaKeyEvent::create(eventNames().webkitneedkeyEvent, initializer);
event->setTarget(this);
m_asyncEventQueue->enqueueEvent(event.release());
+ return true;
}
#endif
diff --git a/Source/WebCore/html/HTMLMediaElement.h b/Source/WebCore/html/HTMLMediaElement.h
index 821e2285b..b698c6b2d 100644
--- a/Source/WebCore/html/HTMLMediaElement.h
+++ b/Source/WebCore/html/HTMLMediaElement.h
@@ -415,7 +415,7 @@ private:
virtual void mediaPlayerKeyAdded(MediaPlayer*, const String& keySystem, const String& sessionId) OVERRIDE;
virtual void mediaPlayerKeyError(MediaPlayer*, const String& keySystem, const String& sessionId, MediaPlayerClient::MediaKeyErrorCode, unsigned short systemCode) OVERRIDE;
virtual void mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength) OVERRIDE;
- virtual void mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength) OVERRIDE;
+ virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength) OVERRIDE;
#endif
virtual String mediaPlayerReferrer() const OVERRIDE;
diff --git a/Source/WebCore/html/HTMLMediaElement.idl b/Source/WebCore/html/HTMLMediaElement.idl
index b6a0a636f..ece0f5348 100644
--- a/Source/WebCore/html/HTMLMediaElement.idl
+++ b/Source/WebCore/html/HTMLMediaElement.idl
@@ -23,99 +23,97 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO,
- JSGenerateToNativeObject
- ] HTMLMediaElement : HTMLElement {
+[
+ Conditional=VIDEO,
+ JSGenerateToNativeObject
+] interface HTMLMediaElement : HTMLElement {
- // error state
- readonly attribute MediaError error;
+// error state
+readonly attribute MediaError error;
- // network state
- attribute [Reflect, URL] DOMString src;
- readonly attribute [URL] DOMString currentSrc;
-
- const unsigned short NETWORK_EMPTY = 0;
- const unsigned short NETWORK_IDLE = 1;
- const unsigned short NETWORK_LOADING = 2;
- const unsigned short NETWORK_NO_SOURCE = 3;
- readonly attribute unsigned short networkState;
- attribute DOMString preload;
+// network state
+attribute [Reflect, URL] DOMString src;
+readonly attribute [URL] DOMString currentSrc;
- readonly attribute TimeRanges buffered;
- void load()
- raises (DOMException);
+const unsigned short NETWORK_EMPTY = 0;
+const unsigned short NETWORK_IDLE = 1;
+const unsigned short NETWORK_LOADING = 2;
+const unsigned short NETWORK_NO_SOURCE = 3;
+readonly attribute unsigned short networkState;
+attribute DOMString preload;
+
+readonly attribute TimeRanges buffered;
+void load()
+ raises (DOMException);
#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
- DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsNullString, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
#else
- DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type);
+DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type);
#endif
- // ready state
- const unsigned short HAVE_NOTHING = 0;
- const unsigned short HAVE_METADATA = 1;
- const unsigned short HAVE_CURRENT_DATA = 2;
- const unsigned short HAVE_FUTURE_DATA = 3;
- const unsigned short HAVE_ENOUGH_DATA = 4;
- readonly attribute unsigned short readyState;
- readonly attribute boolean seeking;
+// ready state
+const unsigned short HAVE_NOTHING = 0;
+const unsigned short HAVE_METADATA = 1;
+const unsigned short HAVE_CURRENT_DATA = 2;
+const unsigned short HAVE_FUTURE_DATA = 3;
+const unsigned short HAVE_ENOUGH_DATA = 4;
+readonly attribute unsigned short readyState;
+readonly attribute boolean seeking;
- // playback state
- attribute float currentTime
- setter raises (DOMException);
- readonly attribute double initialTime;
- readonly attribute float startTime;
- readonly attribute float duration;
- readonly attribute boolean paused;
- attribute float defaultPlaybackRate;
- attribute float playbackRate;
- readonly attribute TimeRanges played;
- readonly attribute TimeRanges seekable;
- readonly attribute boolean ended;
- attribute [Reflect] boolean autoplay;
- attribute [Reflect] boolean loop;
- void play();
- void pause();
+// playback state
+attribute float currentTime
+ setter raises (DOMException);
+readonly attribute double initialTime;
+readonly attribute float startTime;
+readonly attribute float duration;
+readonly attribute boolean paused;
+attribute float defaultPlaybackRate;
+attribute float playbackRate;
+readonly attribute TimeRanges played;
+readonly attribute TimeRanges seekable;
+readonly attribute boolean ended;
+attribute [Reflect] boolean autoplay;
+attribute [Reflect] boolean loop;
+void play();
+void pause();
- // controls
- attribute boolean controls;
- attribute float volume
- setter raises (DOMException);
- attribute boolean muted;
- attribute [Reflect=muted] boolean defaultMuted;
+// controls
+attribute boolean controls;
+attribute float volume
+ setter raises (DOMException);
+attribute boolean muted;
+attribute [Reflect=muted] boolean defaultMuted;
- // WebKit extensions
- attribute boolean webkitPreservesPitch;
+// WebKit extensions
+attribute boolean webkitPreservesPitch;
- readonly attribute boolean webkitHasClosedCaptions;
- attribute boolean webkitClosedCaptionsVisible;
+readonly attribute boolean webkitHasClosedCaptions;
+attribute boolean webkitClosedCaptionsVisible;
- // The number of bytes consumed by the media decoder.
- readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
- readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
+// The number of bytes consumed by the media decoder.
+readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
+readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
- [V8EnabledAtRuntime=encryptedMedia] void webkitGenerateKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional] Uint8Array initData)
- raises (DOMException);
- [V8EnabledAtRuntime=encryptedMedia] void webkitAddKey(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in Uint8Array key, in [Optional] Uint8Array initData, in [Optional=DefaultIsNullString] DOMString sessionId)
- raises (DOMException);
- [V8EnabledAtRuntime=encryptedMedia] void webkitCancelKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional=DefaultIsNullString] DOMString sessionId)
- raises (DOMException);
+[V8EnabledAtRuntime=encryptedMedia] void webkitGenerateKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional] Uint8Array initData)
+ raises (DOMException);
+[V8EnabledAtRuntime=encryptedMedia] void webkitAddKey(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in Uint8Array key, in [Optional] Uint8Array initData, in [Optional=DefaultIsNullString] DOMString sessionId)
+ raises (DOMException);
+[V8EnabledAtRuntime=encryptedMedia] void webkitCancelKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional=DefaultIsNullString] DOMString sessionId)
+ raises (DOMException);
- attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyadded;
- attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyerror;
- attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeymessage;
- attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitneedkey;
+[V8EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyadded;
+attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyerror;
+attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeymessage;
+attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitneedkey;
#endif
#if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
- [V8EnabledAtRuntime=webkitVideoTrack] TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
- raises (DOMException);
- readonly attribute [V8EnabledAtRuntime=webkitVideoTrack] TextTrackList textTracks;
+[V8EnabledAtRuntime=webkitVideoTrack] TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
+ raises (DOMException);
+readonly attribute [V8EnabledAtRuntime=webkitVideoTrack] TextTrackList textTracks;
#endif
- attribute [Reflect, TreatNullAs=NullString] DOMString mediaGroup;
- attribute [CustomSetter] MediaController controller;
+[Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
+attribute [CustomSetter] MediaController controller;
};
-}
diff --git a/Source/WebCore/html/HTMLMenuElement.idl b/Source/WebCore/html/HTMLMenuElement.idl
index ff14754c0..ea756fcae 100644
--- a/Source/WebCore/html/HTMLMenuElement.idl
+++ b/Source/WebCore/html/HTMLMenuElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLMenuElement : HTMLElement {
+ [Reflect] attribute boolean compact;
+};
- interface HTMLMenuElement : HTMLElement {
- attribute [Reflect] boolean compact;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLMetaElement.idl b/Source/WebCore/html/HTMLMetaElement.idl
index f4ffb2d42..4f7e9cd00 100644
--- a/Source/WebCore/html/HTMLMetaElement.idl
+++ b/Source/WebCore/html/HTMLMetaElement.idl
@@ -17,13 +17,10 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLMetaElement : HTMLElement {
+ [Reflect] attribute DOMString content;
+ [Reflect=http_equiv] attribute DOMString httpEquiv;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString scheme;
+};
- interface HTMLMetaElement : HTMLElement {
- attribute [Reflect] DOMString content;
- attribute [Reflect=http_equiv] DOMString httpEquiv;
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString scheme;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLMeterElement.idl b/Source/WebCore/html/HTMLMeterElement.idl
index 8d3e1074c..85d1b5104 100644
--- a/Source/WebCore/html/HTMLMeterElement.idl
+++ b/Source/WebCore/html/HTMLMeterElement.idl
@@ -17,23 +17,20 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
- interface [
- Conditional=METER_ELEMENT
- ] HTMLMeterElement : HTMLElement {
- attribute double value
- setter raises(DOMException);
- attribute double min
- setter raises(DOMException);
- attribute double max
- setter raises(DOMException);
- attribute double low
- setter raises(DOMException);
- attribute double high
- setter raises(DOMException);
- attribute double optimum
- setter raises(DOMException);
- readonly attribute NodeList labels;
- };
-}
-
+[
+ Conditional=METER_ELEMENT
+] interface HTMLMeterElement : HTMLElement {
+ attribute double value
+ setter raises(DOMException);
+ attribute double min
+ setter raises(DOMException);
+ attribute double max
+ setter raises(DOMException);
+ attribute double low
+ setter raises(DOMException);
+ attribute double high
+ setter raises(DOMException);
+ attribute double optimum
+ setter raises(DOMException);
+ readonly attribute NodeList labels;
+};
diff --git a/Source/WebCore/html/HTMLModElement.idl b/Source/WebCore/html/HTMLModElement.idl
index ad8281c45..ccb8da466 100644
--- a/Source/WebCore/html/HTMLModElement.idl
+++ b/Source/WebCore/html/HTMLModElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLModElement : HTMLElement {
+ [Reflect, URL] attribute DOMString cite;
+ [Reflect] attribute DOMString dateTime;
+};
- interface HTMLModElement : HTMLElement {
- attribute [Reflect, URL] DOMString cite;
- attribute [Reflect] DOMString dateTime;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLOListElement.idl b/Source/WebCore/html/HTMLOListElement.idl
index 8d1d3a46f..1e5161556 100644
--- a/Source/WebCore/html/HTMLOListElement.idl
+++ b/Source/WebCore/html/HTMLOListElement.idl
@@ -17,13 +17,10 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLOListElement : HTMLElement {
+ [Reflect] attribute boolean compact;
+ attribute long start;
+ [Reflect] attribute boolean reversed;
+ [Reflect] attribute DOMString type;
+};
- interface HTMLOListElement : HTMLElement {
- attribute [Reflect] boolean compact;
- attribute long start;
- attribute [Reflect] boolean reversed;
- attribute [Reflect] DOMString type;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLObjectElement.idl b/Source/WebCore/html/HTMLObjectElement.idl
index f1055fdb8..c3c9cad7a 100644
--- a/Source/WebCore/html/HTMLObjectElement.idl
+++ b/Source/WebCore/html/HTMLObjectElement.idl
@@ -18,49 +18,46 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ CustomNamedSetter,
+ JSCustomGetOwnPropertySlotAndDescriptor,
+ CustomCall
+] interface HTMLObjectElement : HTMLElement {
+ readonly attribute HTMLFormElement form;
+ [Reflect] attribute DOMString code;
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString archive;
+ [Reflect] attribute DOMString border;
+ [Reflect] attribute DOMString codeBase;
+ [Reflect] attribute DOMString codeType;
+ [Reflect, URL] attribute DOMString data;
+ [Reflect] attribute boolean declare;
+ [Reflect] attribute DOMString height;
+ [Reflect] attribute long hspace;
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString standby;
+ [Reflect] attribute DOMString type;
+ [Reflect] attribute DOMString useMap;
+ [Reflect] attribute long vspace;
+ [Reflect] attribute DOMString width;
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- interface [
- CustomNamedSetter,
- JSCustomGetOwnPropertySlotAndDescriptor,
- CustomCall
- ] HTMLObjectElement : HTMLElement {
- readonly attribute HTMLFormElement form;
- attribute [Reflect] DOMString code;
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString archive;
- attribute [Reflect] DOMString border;
- attribute [Reflect] DOMString codeBase;
- attribute [Reflect] DOMString codeType;
- attribute [Reflect, URL] DOMString data;
- attribute [Reflect] boolean declare;
- attribute [Reflect] DOMString height;
- attribute [Reflect] long hspace;
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString standby;
- attribute [Reflect] DOMString type;
- attribute [Reflect] DOMString useMap;
- attribute [Reflect] long vspace;
- attribute [Reflect] DOMString width;
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
-
- // Introduced in DOM Level 2:
- readonly attribute [CheckSecurityForNode] Document contentDocument;
+ // Introduced in DOM Level 2:
+ [CheckSecurityForNode] readonly attribute Document contentDocument;
#if defined(ENABLE_SVG) && ENABLE_SVG
#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
- [CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
+ [CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
#endif
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // Objective-C extension:
- readonly attribute URL absoluteImageURL;
+ // Objective-C extension:
+ readonly attribute URL absoluteImageURL;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLOptGroupElement.idl b/Source/WebCore/html/HTMLOptGroupElement.idl
index 75cead0fb..26a782fd5 100644
--- a/Source/WebCore/html/HTMLOptGroupElement.idl
+++ b/Source/WebCore/html/HTMLOptGroupElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLOptGroupElement : HTMLElement {
+ [Reflect] attribute boolean disabled;
+ [Reflect] attribute DOMString label;
+};
- interface HTMLOptGroupElement : HTMLElement {
- attribute [Reflect] boolean disabled;
- attribute [Reflect] DOMString label;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLOptionElement.idl b/Source/WebCore/html/HTMLOptionElement.idl
index b7b3489ea..d805392a0 100644
--- a/Source/WebCore/html/HTMLOptionElement.idl
+++ b/Source/WebCore/html/HTMLOptionElement.idl
@@ -18,25 +18,22 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface [
- JSGenerateToNativeObject,
- NamedConstructor=Option(in [Optional=DefaultIsNullString] DOMString data, in [Optional=DefaultIsNullString] DOMString value, in [Optional=DefaultIsUndefined] boolean defaultSelected, in [Optional=DefaultIsUndefined] boolean selected),
- ConstructorRaisesException
- ] HTMLOptionElement : HTMLElement {
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute DOMString label;
- attribute [Reflect=selected] boolean defaultSelected;
- attribute boolean selected;
- attribute DOMString value;
+[
+ JSGenerateToNativeObject,
+ NamedConstructor=Option(in [Optional=DefaultIsNullString] DOMString data, in [Optional=DefaultIsNullString] DOMString value, in [Optional=DefaultIsUndefined] boolean defaultSelected, in [Optional=DefaultIsUndefined] boolean selected),
+ ConstructorRaisesException
+] interface HTMLOptionElement : HTMLElement {
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ attribute DOMString label;
+ [Reflect=selected] attribute boolean defaultSelected;
+ attribute boolean selected;
+ attribute DOMString value;
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- attribute DOMString text setter raises(DOMException);
+ attribute DOMString text setter raises(DOMException);
#else
- readonly attribute DOMString text;
+ readonly attribute DOMString text;
#endif
- readonly attribute long index;
- };
-}
+ readonly attribute long index;
+};
diff --git a/Source/WebCore/html/HTMLOptionsCollection.idl b/Source/WebCore/html/HTMLOptionsCollection.idl
index 0476e65fc..b1dc9f1dd 100644
--- a/Source/WebCore/html/HTMLOptionsCollection.idl
+++ b/Source/WebCore/html/HTMLOptionsCollection.idl
@@ -18,25 +18,22 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ JSGenerateToNativeObject,
+ CustomIndexedSetter
+] interface HTMLOptionsCollection : HTMLCollection {
+ attribute long selectedIndex;
+ [Custom] attribute unsigned long length
+ setter raises (DOMException);
- interface [
- JSGenerateToNativeObject,
- CustomIndexedSetter
- ] HTMLOptionsCollection : HTMLCollection {
- attribute long selectedIndex;
- attribute [Custom] unsigned long length
- setter raises (DOMException);
-
- [Custom] void add(in [Optional=DefaultIsUndefined] HTMLOptionElement option,
- in [Optional] unsigned long index)
- raises (DOMException);
- [Custom] void remove(in [Optional=DefaultIsUndefined] unsigned long index);
+ [Custom] void add(in [Optional=DefaultIsUndefined] HTMLOptionElement option,
+ in [Optional] unsigned long index)
+ raises (DOMException);
+ [Custom] void remove(in [Optional=DefaultIsUndefined] unsigned long index);
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- Node item(in unsigned long index);
- Node namedItem(in DOMString name);
+ Node item(in unsigned long index);
+ Node namedItem(in DOMString name);
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/HTMLOutputElement.idl b/Source/WebCore/html/HTMLOutputElement.idl
index 35761c335..ea8312abc 100644
--- a/Source/WebCore/html/HTMLOutputElement.idl
+++ b/Source/WebCore/html/HTMLOutputElement.idl
@@ -22,22 +22,20 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface HTMLOutputElement : HTMLElement {
- attribute [Custom] DOMSettableTokenList htmlFor;
- readonly attribute HTMLFormElement form;
- attribute [Reflect] DOMString name;
+interface HTMLOutputElement : HTMLElement {
+ [Custom] attribute DOMSettableTokenList htmlFor;
+ readonly attribute HTMLFormElement form;
+ [Reflect] attribute DOMString name;
- readonly attribute DOMString type;
- attribute [TreatNullAs=NullString] DOMString defaultValue;
- attribute [TreatNullAs=NullString] DOMString value;
+ readonly attribute DOMString type;
+ [TreatNullAs=NullString] attribute DOMString defaultValue;
+ [TreatNullAs=NullString] attribute DOMString value;
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute NodeList labels;
- };
-}
+ readonly attribute NodeList labels;
+};
diff --git a/Source/WebCore/html/HTMLParagraphElement.idl b/Source/WebCore/html/HTMLParagraphElement.idl
index 246e9e99e..e6bd9e8bd 100644
--- a/Source/WebCore/html/HTMLParagraphElement.idl
+++ b/Source/WebCore/html/HTMLParagraphElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLParagraphElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+};
- interface HTMLParagraphElement : HTMLElement {
- attribute [Reflect] DOMString align;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLParamElement.idl b/Source/WebCore/html/HTMLParamElement.idl
index 1f0c0ded6..fea259445 100644
--- a/Source/WebCore/html/HTMLParamElement.idl
+++ b/Source/WebCore/html/HTMLParamElement.idl
@@ -17,13 +17,10 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLParamElement : HTMLElement {
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString type;
+ [Reflect] attribute DOMString value;
+ [Reflect] attribute DOMString valueType;
+};
- interface HTMLParamElement : HTMLElement {
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString type;
- attribute [Reflect] DOMString value;
- attribute [Reflect] DOMString valueType;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLPlugInElement.cpp b/Source/WebCore/html/HTMLPlugInElement.cpp
index 1b5843483..9947a736e 100644
--- a/Source/WebCore/html/HTMLPlugInElement.cpp
+++ b/Source/WebCore/html/HTMLPlugInElement.cpp
@@ -35,6 +35,7 @@
#include "Page.h"
#include "PluginViewBase.h"
#include "RenderEmbeddedObject.h"
+#include "RenderSnapshottedPlugIn.h"
#include "RenderWidget.h"
#include "Settings.h"
#include "Widget.h"
@@ -55,6 +56,7 @@ HTMLPlugInElement::HTMLPlugInElement(const QualifiedName& tagName, Document* doc
, m_NPObject(0)
#endif
, m_isCapturingMouseEvents(false)
+ , m_displayState(Playing)
{
}
@@ -176,9 +178,15 @@ void HTMLPlugInElement::defaultEventHandler(Event* event)
// FIXME: Mouse down and scroll events are passed down to plug-in via custom code in EventHandler; these code paths should be united.
RenderObject* r = renderer();
- if (r && r->isEmbeddedObject() && toRenderEmbeddedObject(r)->showsUnavailablePluginIndicator()) {
- toRenderEmbeddedObject(r)->handleUnavailablePluginIndicatorEvent(event);
- return;
+ if (r && r->isEmbeddedObject()) {
+ if (toRenderEmbeddedObject(r)->showsUnavailablePluginIndicator()) {
+ toRenderEmbeddedObject(r)->handleUnavailablePluginIndicatorEvent(event);
+ return;
+ }
+ if (r->isSnapshottedPlugIn() && displayState() < Playing) {
+ toRenderSnapshottedPlugIn(r)->handleEvent(event);
+ return;
+ }
}
if (!r || !r->isWidget())
diff --git a/Source/WebCore/html/HTMLPlugInElement.h b/Source/WebCore/html/HTMLPlugInElement.h
index eeec60cb5..d7bcb166e 100644
--- a/Source/WebCore/html/HTMLPlugInElement.h
+++ b/Source/WebCore/html/HTMLPlugInElement.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999 Lars Knoll (knoll@kde.org)
* (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2012 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -24,6 +24,7 @@
#define HTMLPlugInElement_h
#include "HTMLFrameOwnerElement.h"
+#include "Image.h"
#include "ImageLoaderClient.h"
#include "ScriptInstance.h"
@@ -37,7 +38,7 @@ class RenderEmbeddedObject;
class RenderWidget;
class Widget;
-class HTMLPlugInElement : public HTMLFrameOwnerElement, public ImageLoaderClientBase<HTMLPlugInElement> {
+class HTMLPlugInElement : public HTMLFrameOwnerElement {
public:
virtual ~HTMLPlugInElement();
@@ -47,6 +48,15 @@ public:
Widget* pluginWidget() const;
+ enum DisplayState {
+ WaitingForSnapshot,
+ DisplayingSnapshot,
+ Playing
+ };
+ DisplayState displayState() const { return m_displayState; }
+ void setDisplayState(DisplayState state) { m_displayState = state; }
+ virtual void updateSnapshot(PassRefPtr<Image>) { }
+
#if ENABLE(NETSCAPE_PLUGIN_API)
NPObject* getNPObject();
#endif
@@ -84,6 +94,8 @@ private:
NPObject* m_NPObject;
#endif
bool m_isCapturingMouseEvents;
+
+ DisplayState m_displayState;
};
} // namespace WebCore
diff --git a/Source/WebCore/html/HTMLPlugInImageElement.cpp b/Source/WebCore/html/HTMLPlugInImageElement.cpp
index 4954e36d5..7e7c27513 100644
--- a/Source/WebCore/html/HTMLPlugInImageElement.cpp
+++ b/Source/WebCore/html/HTMLPlugInImageElement.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2011, 2012 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -31,7 +31,9 @@
#include "Page.h"
#include "RenderEmbeddedObject.h"
#include "RenderImage.h"
+#include "RenderSnapshottedPlugIn.h"
#include "SecurityOrigin.h"
+#include "Settings.h"
#include "StyleResolver.h"
namespace WebCore {
@@ -47,6 +49,9 @@ HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Doc
, m_needsDocumentActivationCallbacks(false)
{
setHasCustomCallbacks();
+
+ if (document->page() && document->page()->settings()->plugInSnapshottingEnabled())
+ setDisplayState(WaitingForSnapshot);
}
HTMLPlugInImageElement::~HTMLPlugInImageElement()
@@ -83,7 +88,7 @@ bool HTMLPlugInImageElement::allowedToLoadFrameURL(const String& url)
{
ASSERT(document());
ASSERT(document()->frame());
- if (document()->frame()->page()->frameCount() >= Page::maxNumberOfFrames)
+ if (document()->frame()->page()->subframeCount() >= Page::maxNumberOfFrames)
return false;
KURL completeURL = document()->completeURL(url);
@@ -141,6 +146,9 @@ RenderObject* HTMLPlugInImageElement::createRenderer(RenderArena* arena, RenderS
image->setImageResource(RenderImageResource::create());
return image;
}
+
+ if (document()->page() && document()->page()->settings()->plugInSnapshottingEnabled())
+ return new (arena) RenderSnapshottedPlugIn(this);
return new (arena) RenderEmbeddedObject(this);
}
@@ -253,4 +261,13 @@ void HTMLPlugInImageElement::updateWidgetCallback(Node* n, unsigned)
static_cast<HTMLPlugInImageElement*>(n)->updateWidgetIfNecessary();
}
+void HTMLPlugInImageElement::updateSnapshot(PassRefPtr<Image> image)
+{
+ if (displayState() > WaitingForSnapshot || !renderer()->isSnapshottedPlugIn())
+ return;
+
+ toRenderSnapshottedPlugIn(renderer())->updateSnapshot(image);
+ setDisplayState(DisplayingSnapshot);
+}
+
} // namespace WebCore
diff --git a/Source/WebCore/html/HTMLPlugInImageElement.h b/Source/WebCore/html/HTMLPlugInImageElement.h
index 168ed4634..95fbd8a79 100644
--- a/Source/WebCore/html/HTMLPlugInImageElement.h
+++ b/Source/WebCore/html/HTMLPlugInImageElement.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009, 2011, 2012 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -42,7 +42,7 @@ enum PreferPlugInsForImagesOption {
};
// Base class for HTMLObjectElement and HTMLEmbedElement
-class HTMLPlugInImageElement : public HTMLPlugInElement {
+class HTMLPlugInImageElement : public HTMLPlugInElement, public ImageLoaderClientBase<HTMLPlugInImageElement> {
public:
virtual ~HTMLPlugInImageElement();
@@ -90,6 +90,8 @@ private:
void updateWidgetIfNecessary();
virtual bool useFallbackContent() const { return false; }
+ virtual void updateSnapshot(PassRefPtr<Image>) OVERRIDE;
+
bool m_needsWidgetUpdate;
bool m_shouldPreferPlugInsForImages;
bool m_needsDocumentActivationCallbacks;
diff --git a/Source/WebCore/html/HTMLPreElement.idl b/Source/WebCore/html/HTMLPreElement.idl
index ae137f024..807248c0c 100644
--- a/Source/WebCore/html/HTMLPreElement.idl
+++ b/Source/WebCore/html/HTMLPreElement.idl
@@ -18,15 +18,12 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLPreElement : HTMLElement {
+ // FIXME: DOM spec says that width should be of type DOMString
+ // see http://bugs.webkit.org/show_bug.cgi?id=8992
+ [Reflect] attribute long width;
+
+ // Extensions
+ [Reflect] attribute boolean wrap;
+};
- interface HTMLPreElement : HTMLElement {
- // FIXME: DOM spec says that width should be of type DOMString
- // see http://bugs.webkit.org/show_bug.cgi?id=8992
- attribute [Reflect] long width;
-
- // Extensions
- attribute [Reflect] boolean wrap;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLProgressElement.idl b/Source/WebCore/html/HTMLProgressElement.idl
index 6ad1ab53e..23a94fadc 100644
--- a/Source/WebCore/html/HTMLProgressElement.idl
+++ b/Source/WebCore/html/HTMLProgressElement.idl
@@ -17,16 +17,14 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
- interface [
- Conditional=PROGRESS_ELEMENT
- ] HTMLProgressElement : HTMLElement {
- attribute double value
- setter raises(DOMException);
- attribute double max
- setter raises(DOMException);
- readonly attribute double position;
- readonly attribute NodeList labels;
- };
+[
+ Conditional=PROGRESS_ELEMENT
+] interface HTMLProgressElement : HTMLElement {
+ attribute double value
+ setter raises(DOMException);
+ attribute double max
+ setter raises(DOMException);
+ readonly attribute double position;
+ readonly attribute NodeList labels;
+};
-}
diff --git a/Source/WebCore/html/HTMLPropertiesCollection.idl b/Source/WebCore/html/HTMLPropertiesCollection.idl
index 760f53acf..05acae119 100644
--- a/Source/WebCore/html/HTMLPropertiesCollection.idl
+++ b/Source/WebCore/html/HTMLPropertiesCollection.idl
@@ -28,18 +28,15 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=MICRODATA,
+ JSGenerateToJSObject,
+ IndexedGetter,
+ NamedGetter
+] interface HTMLPropertiesCollection : HTMLCollection {
+ readonly attribute unsigned long length;
+ Node item(in unsigned long index);
- interface [
- Conditional=MICRODATA,
- JSGenerateToJSObject,
- IndexedGetter,
- NamedGetter
- ] HTMLPropertiesCollection : HTMLCollection {
- readonly attribute unsigned long length;
- Node item(in unsigned long index);
-
- readonly attribute DOMStringList names;
- PropertyNodeList namedItem(in DOMString name);
- };
-}
+ readonly attribute DOMStringList names;
+ PropertyNodeList namedItem(in DOMString name);
+};
diff --git a/Source/WebCore/html/HTMLQuoteElement.idl b/Source/WebCore/html/HTMLQuoteElement.idl
index fa1bcdb57..c53a1a2f1 100644
--- a/Source/WebCore/html/HTMLQuoteElement.idl
+++ b/Source/WebCore/html/HTMLQuoteElement.idl
@@ -17,9 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLQuoteElement : HTMLElement {
- attribute [Reflect, URL] DOMString cite;
- };
-}
+interface HTMLQuoteElement : HTMLElement {
+ [Reflect, URL] attribute DOMString cite;
+};
diff --git a/Source/WebCore/html/HTMLScriptElement.idl b/Source/WebCore/html/HTMLScriptElement.idl
index ba16e851c..1365d12bf 100644
--- a/Source/WebCore/html/HTMLScriptElement.idl
+++ b/Source/WebCore/html/HTMLScriptElement.idl
@@ -17,18 +17,15 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
-
- interface HTMLScriptElement : HTMLElement {
- attribute [TreatNullAs=NullString] DOMString text;
- attribute [Reflect=for] DOMString htmlFor;
- attribute [Reflect] DOMString event;
- attribute [Reflect] DOMString charset;
- attribute boolean async;
- attribute [Reflect] boolean defer;
- attribute [Reflect, URL] DOMString src;
- attribute [Reflect] DOMString type;
- attribute [Reflect] DOMString crossOrigin;
- attribute [Reflect, Conditional=CSP_NEXT] DOMString nonce;
- };
-}
+interface HTMLScriptElement : HTMLElement {
+ [TreatNullAs=NullString] attribute DOMString text;
+ [Reflect=for] attribute DOMString htmlFor;
+ [Reflect] attribute DOMString event;
+ [Reflect] attribute DOMString charset;
+ attribute boolean async;
+ [Reflect] attribute boolean defer;
+ [Reflect, URL] attribute DOMString src;
+ [Reflect] attribute DOMString type;
+ [Reflect] attribute DOMString crossOrigin;
+ [Reflect, Conditional=CSP_NEXT] attribute DOMString nonce;
+};
diff --git a/Source/WebCore/html/HTMLSelectElement.cpp b/Source/WebCore/html/HTMLSelectElement.cpp
index 914b55de8..04e624feb 100644
--- a/Source/WebCore/html/HTMLSelectElement.cpp
+++ b/Source/WebCore/html/HTMLSelectElement.cpp
@@ -1289,7 +1289,7 @@ void HTMLSelectElement::listBoxDefaultEventHandler(Event* event)
// Convert to coords relative to the list box if needed.
MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
- IntPoint localOffset = roundedIntPoint(renderer()->absoluteToLocal(mouseEvent->absoluteLocation(), false, true));
+ IntPoint localOffset = roundedIntPoint(renderer()->absoluteToLocal(mouseEvent->absoluteLocation(), UseTransforms | SnapOffsetForTransforms));
int listIndex = toRenderListBox(renderer())->listIndexAtOffset(toSize(localOffset));
if (listIndex >= 0) {
if (!disabled()) {
@@ -1309,7 +1309,7 @@ void HTMLSelectElement::listBoxDefaultEventHandler(Event* event)
if (mouseEvent->button() != LeftButton || !mouseEvent->buttonDown())
return;
- IntPoint localOffset = roundedIntPoint(renderer()->absoluteToLocal(mouseEvent->absoluteLocation(), false, true));
+ IntPoint localOffset = roundedIntPoint(renderer()->absoluteToLocal(mouseEvent->absoluteLocation(), UseTransforms | SnapOffsetForTransforms));
int listIndex = toRenderListBox(renderer())->listIndexAtOffset(toSize(localOffset));
if (listIndex >= 0) {
if (!disabled()) {
@@ -1514,8 +1514,10 @@ void HTMLSelectElement::typeAheadFind(KeyboardEvent* event)
return;
int selected = selectedIndex();
- int index = (optionToListIndex(selected >= 0 ? selected : 0) + searchStartOffset) % itemCount;
- ASSERT(index >= 0);
+ int index = optionToListIndex(selected >= 0 ? selected : 0) + searchStartOffset;
+ if (index < 0)
+ return;
+ index %= itemCount;
// Compute a case-folded copy of the prefix string before beginning the search for
// a matching element. This code uses foldCase to work around the fact that
diff --git a/Source/WebCore/html/HTMLSelectElement.idl b/Source/WebCore/html/HTMLSelectElement.idl
index 6a1ae03d1..ac7f98904 100644
--- a/Source/WebCore/html/HTMLSelectElement.idl
+++ b/Source/WebCore/html/HTMLSelectElement.idl
@@ -18,51 +18,48 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ IndexedGetter,
+ CustomIndexedSetter
+] interface HTMLSelectElement : HTMLElement {
+ attribute [Reflect] boolean autofocus;
+ attribute [Reflect] boolean disabled;
+ readonly attribute HTMLFormElement form;
+ attribute boolean multiple;
+ attribute [Reflect] DOMString name;
+ attribute [Reflect] boolean required;
+ attribute long size;
- interface [
- IndexedGetter,
- CustomIndexedSetter
- ] HTMLSelectElement : HTMLElement {
- attribute [Reflect] boolean autofocus;
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute boolean multiple;
- attribute [Reflect] DOMString name;
- attribute [Reflect] boolean required;
- attribute long size;
+ readonly attribute DOMString type;
- readonly attribute DOMString type;
-
- readonly attribute HTMLOptionsCollection options;
+ readonly attribute HTMLOptionsCollection options;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- // DOM Level 2 changes type of length attribute to unsigned long,
- // for compatibility we keep DOM Level 1 definition.
- readonly attribute long length;
+ // DOM Level 2 changes type of length attribute to unsigned long,
+ // for compatibility we keep DOM Level 1 definition.
+ readonly attribute long length;
#else
- attribute unsigned long length setter raises (DOMException);
+ attribute unsigned long length setter raises (DOMException);
#endif
- Node item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
- Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
- [ObjCLegacyUnnamedParameters] void add(in [Optional=DefaultIsUndefined] HTMLElement element,
- in [Optional=DefaultIsUndefined] HTMLElement before) raises(DOMException);
+ Node item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
+ Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+ [ObjCLegacyUnnamedParameters] void add(in [Optional=DefaultIsUndefined] HTMLElement element,
+ in [Optional=DefaultIsUndefined] HTMLElement before) raises(DOMException);
#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- // In JavaScript, we support both option index and option object parameters.
- // As of this writing this cannot be auto-generated.
- [Custom] void remove(/* indexOrOption */);
+ // In JavaScript, we support both option index and option object parameters.
+ // As of this writing this cannot be auto-generated.
+ [Custom] void remove(/* indexOrOption */);
#else
- void remove(in long index);
+ void remove(in long index);
#endif
- readonly attribute HTMLCollection selectedOptions;
- attribute long selectedIndex;
- attribute [TreatNullAs=NullString] DOMString value;
+ readonly attribute HTMLCollection selectedOptions;
+ attribute long selectedIndex;
+ [TreatNullAs=NullString] attribute DOMString value;
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute NodeList labels;
- };
-}
+ readonly attribute NodeList labels;
+};
diff --git a/Source/WebCore/html/HTMLSourceElement.idl b/Source/WebCore/html/HTMLSourceElement.idl
index dc707140a..d7880e45d 100644
--- a/Source/WebCore/html/HTMLSourceElement.idl
+++ b/Source/WebCore/html/HTMLSourceElement.idl
@@ -23,12 +23,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO,
- ] HTMLSourceElement : HTMLElement {
- attribute [Reflect, URL] DOMString src;
- attribute DOMString type;
- attribute DOMString media;
+[
+ Conditional=VIDEO,
+] interface HTMLSourceElement : HTMLElement {
+attribute [Reflect, URL] DOMString src;
+attribute DOMString type;
+attribute DOMString media;
};
-}
diff --git a/Source/WebCore/html/HTMLSpanElement.idl b/Source/WebCore/html/HTMLSpanElement.idl
index d6d4e59eb..e47cfd797 100644
--- a/Source/WebCore/html/HTMLSpanElement.idl
+++ b/Source/WebCore/html/HTMLSpanElement.idl
@@ -23,10 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+// http://www.whatwg.org/specs/web-apps/current-work/#htmlspanelement
+interface HTMLSpanElement : HTMLElement {
+};
- // http://www.whatwg.org/specs/web-apps/current-work/#htmlspanelement
- interface HTMLSpanElement : HTMLElement {
- };
-
-}
diff --git a/Source/WebCore/html/HTMLStyleElement.cpp b/Source/WebCore/html/HTMLStyleElement.cpp
index 9bfc91a43..228c392df 100644
--- a/Source/WebCore/html/HTMLStyleElement.cpp
+++ b/Source/WebCore/html/HTMLStyleElement.cpp
@@ -30,6 +30,7 @@
#include "Event.h"
#include "EventSender.h"
#include "HTMLNames.h"
+#include "MediaList.h"
#include "ScriptEventListener.h"
#include "ScriptableDocumentParser.h"
#include "ShadowRoot.h"
@@ -50,9 +51,7 @@ inline HTMLStyleElement::HTMLStyleElement(const QualifiedName& tagName, Document
, StyleElement(document, createdByParser)
, m_firedLoad(false)
, m_loadedSheet(false)
-#if ENABLE(STYLE_SCOPED)
, m_scopedStyleRegistrationState(NotRegistered)
-#endif
{
ASSERT(hasTagName(styleTag));
}
@@ -79,17 +78,19 @@ void HTMLStyleElement::parseAttribute(const Attribute& attribute)
setAttributeEventListener(eventNames().loadEvent, createAttributeEventListener(this, attribute));
else if (attribute.name() == onerrorAttr)
setAttributeEventListener(eventNames().errorEvent, createAttributeEventListener(this, attribute));
-#if ENABLE(STYLE_SCOPED)
- else if (attribute.name() == scopedAttr)
+ else if (attribute.name() == scopedAttr && ContextFeatures::styleScopedEnabled(document()))
scopedAttributeChanged(!attribute.isNull());
-#endif
- else
+ else if (attribute.name() == mediaAttr && inDocument() && document()->renderer() && m_sheet) {
+ m_sheet->setMediaQueries(MediaQuerySet::createAllowingDescriptionSyntax(attribute.value()));
+ document()->styleResolverChanged(RecalcStyleImmediately);
+ } else
HTMLElement::parseAttribute(attribute);
}
-#if ENABLE(STYLE_SCOPED)
void HTMLStyleElement::scopedAttributeChanged(bool scoped)
{
+ ASSERT(ContextFeatures::styleScopedEnabled(document()));
+
if (!inDocument())
return;
@@ -114,7 +115,6 @@ void HTMLStyleElement::scopedAttributeChanged(bool scoped)
if (isInShadowTree() && m_scopedStyleRegistrationState != RegisteredInShadowRoot)
registerWithScopingNode(false);
}
-#endif
void HTMLStyleElement::finishParsingChildren()
{
@@ -122,15 +122,12 @@ void HTMLStyleElement::finishParsingChildren()
HTMLElement::finishParsingChildren();
}
-#if ENABLE(STYLE_SCOPED)
inline bool HTMLStyleElement::isRegisteredAsScoped() const
{
// Note: We cannot rely on the 'scoped' attribute still being present when this method is invoked.
// Therefore we cannot rely on scoped()!
if (m_scopedStyleRegistrationState == NotRegistered)
return false;
- if (!ContextFeatures::styleScopedEnabled(document()))
- return false;
return true;
}
@@ -167,8 +164,6 @@ void HTMLStyleElement::registerWithScopingNode(bool scoped)
ASSERT(inDocument());
if (m_scopedStyleRegistrationState != NotRegistered)
return;
- if (!ContextFeatures::styleScopedEnabled(document()))
- return;
ContainerNode* scope = scoped ? parentNode() : shadowRoot();
if (!scope)
@@ -205,22 +200,14 @@ void HTMLStyleElement::unregisterWithScopingNode(ContainerNode* scope)
m_scopedStyleRegistrationState = NotRegistered;
}
-#else
-size_t Node::numberOfScopedHTMLStyleChildren() const
-{
- return 0;
-}
-#endif
Node::InsertionNotificationRequest HTMLStyleElement::insertedInto(ContainerNode* insertionPoint)
{
HTMLElement::insertedInto(insertionPoint);
if (insertionPoint->inDocument()) {
StyleElement::insertedIntoDocument(document(), this);
-#if ENABLE(STYLE_SCOPED)
if (m_scopedStyleRegistrationState == NotRegistered && (scoped() || isInShadowTree()))
registerWithScopingNode(scoped());
-#endif
}
return InsertionDone;
@@ -230,7 +217,6 @@ void HTMLStyleElement::removedFrom(ContainerNode* insertionPoint)
{
HTMLElement::removedFrom(insertionPoint);
-#if ENABLE(STYLE_SCOPED)
// In the current implementation, <style scoped> is only registered if the node is in the document.
// That is, because willRemove() is also called if an ancestor is removed from the document.
// Now, if we want to register <style scoped> even if it's not inDocument,
@@ -245,7 +231,6 @@ void HTMLStyleElement::removedFrom(ContainerNode* insertionPoint)
scope = parentNode() ? parentNode() : insertionPoint;
unregisterWithScopingNode(scope);
}
-#endif
if (insertionPoint->inDocument())
StyleElement::removedFromDocument(document(), this);
@@ -267,10 +252,9 @@ const AtomicString& HTMLStyleElement::type() const
return getAttribute(typeAttr);
}
-#if ENABLE(STYLE_SCOPED)
bool HTMLStyleElement::scoped() const
{
- return fastHasAttribute(scopedAttr);
+ return fastHasAttribute(scopedAttr) && ContextFeatures::styleScopedEnabled(document());
}
void HTMLStyleElement::setScoped(bool scopedValue)
@@ -292,7 +276,6 @@ Element* HTMLStyleElement::scopingElement() const
return toElement(parentOrHost);
}
-#endif // ENABLE(STYLE_SCOPED)
void HTMLStyleElement::dispatchPendingLoadEvents()
{
diff --git a/Source/WebCore/html/HTMLStyleElement.h b/Source/WebCore/html/HTMLStyleElement.h
index 8476c648f..76b28d4cf 100644
--- a/Source/WebCore/html/HTMLStyleElement.h
+++ b/Source/WebCore/html/HTMLStyleElement.h
@@ -41,12 +41,10 @@ public:
void setType(const AtomicString&);
-#if ENABLE(STYLE_SCOPED)
bool scoped() const;
void setScoped(bool);
Element* scopingElement() const;
bool isRegisteredAsScoped() const;
-#endif
using StyleElement::sheet;
@@ -77,23 +75,19 @@ private:
virtual const AtomicString& media() const;
virtual const AtomicString& type() const;
-#if ENABLE(STYLE_SCOPED)
void scopedAttributeChanged(bool);
void registerWithScopingNode(bool);
void unregisterWithScopingNode(ContainerNode*);
-#endif
bool m_firedLoad;
bool m_loadedSheet;
-#if ENABLE(STYLE_SCOPED)
enum ScopedStyleRegistrationState {
NotRegistered,
RegisteredAsScoped,
RegisteredInShadowRoot
};
ScopedStyleRegistrationState m_scopedStyleRegistrationState;
-#endif
};
} //namespace
diff --git a/Source/WebCore/html/HTMLStyleElement.idl b/Source/WebCore/html/HTMLStyleElement.idl
index 1b9abd47a..a14165d4e 100644
--- a/Source/WebCore/html/HTMLStyleElement.idl
+++ b/Source/WebCore/html/HTMLStyleElement.idl
@@ -18,16 +18,13 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLStyleElement : HTMLElement {
+ attribute boolean disabled;
+ [Conditional=STYLE_SCOPED, V8EnabledAtRuntime=styleScoped] attribute boolean scoped;
+ [Reflect] attribute DOMString media;
+ [Reflect] attribute DOMString type;
- interface HTMLStyleElement : HTMLElement {
- attribute boolean disabled;
- attribute [Conditional=STYLE_SCOPED, V8EnabledAtRuntime=styleScoped] boolean scoped;
- attribute [Reflect] DOMString media;
- attribute [Reflect] DOMString type;
+ // DOM Level 2 Style
+ readonly attribute StyleSheet sheet;
+};
- // DOM Level 2 Style
- readonly attribute StyleSheet sheet;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableCaptionElement.idl b/Source/WebCore/html/HTMLTableCaptionElement.idl
index 075953978..d9b3aa548 100644
--- a/Source/WebCore/html/HTMLTableCaptionElement.idl
+++ b/Source/WebCore/html/HTMLTableCaptionElement.idl
@@ -18,12 +18,9 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ JSGenerateToNativeObject
+] interface HTMLTableCaptionElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+};
- interface [
- JSGenerateToNativeObject
- ] HTMLTableCaptionElement : HTMLElement {
- attribute [Reflect] DOMString align;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableCellElement.idl b/Source/WebCore/html/HTMLTableCellElement.idl
index ae286f4d6..3b949f390 100644
--- a/Source/WebCore/html/HTMLTableCellElement.idl
+++ b/Source/WebCore/html/HTMLTableCellElement.idl
@@ -18,24 +18,21 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTableCellElement : HTMLElement {
+ readonly attribute long cellIndex;
+ [Reflect] attribute DOMString abbr;
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString axis;
+ [Reflect] attribute DOMString bgColor;
+ [Reflect=char] attribute DOMString ch;
+ [Reflect=charoff] attribute DOMString chOff;
+ attribute long colSpan;
+ [Reflect] attribute DOMString headers;
+ [Reflect] attribute DOMString height;
+ [Reflect] attribute boolean noWrap;
+ attribute long rowSpan;
+ [Reflect] attribute DOMString scope;
+ [Reflect] attribute DOMString vAlign;
+ [Reflect] attribute DOMString width;
+};
- interface HTMLTableCellElement : HTMLElement {
- readonly attribute long cellIndex;
- attribute [Reflect] DOMString abbr;
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString axis;
- attribute [Reflect] DOMString bgColor;
- attribute [Reflect=char] DOMString ch;
- attribute [Reflect=charoff] DOMString chOff;
- attribute long colSpan;
- attribute [Reflect] DOMString headers;
- attribute [Reflect] DOMString height;
- attribute [Reflect] boolean noWrap;
- attribute long rowSpan;
- attribute [Reflect] DOMString scope;
- attribute [Reflect] DOMString vAlign;
- attribute [Reflect] DOMString width;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableColElement.idl b/Source/WebCore/html/HTMLTableColElement.idl
index a6e665401..725e05dec 100644
--- a/Source/WebCore/html/HTMLTableColElement.idl
+++ b/Source/WebCore/html/HTMLTableColElement.idl
@@ -18,15 +18,12 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTableColElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+ [Reflect=char] attribute DOMString ch;
+ [Reflect=charoff] attribute DOMString chOff;
+ attribute long span;
+ [Reflect] attribute DOMString vAlign;
+ [Reflect] attribute DOMString width;
+};
- interface HTMLTableColElement : HTMLElement {
- attribute [Reflect] DOMString align;
- attribute [Reflect=char] DOMString ch;
- attribute [Reflect=charoff] DOMString chOff;
- attribute long span;
- attribute [Reflect] DOMString vAlign;
- attribute [Reflect] DOMString width;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableElement.idl b/Source/WebCore/html/HTMLTableElement.idl
index 190861a7f..470af5658 100644
--- a/Source/WebCore/html/HTMLTableElement.idl
+++ b/Source/WebCore/html/HTMLTableElement.idl
@@ -18,37 +18,34 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTableElement : HTMLElement {
+ attribute HTMLTableCaptionElement caption setter raises(DOMException);
+ attribute HTMLTableSectionElement tHead setter raises(DOMException);
+ attribute HTMLTableSectionElement tFoot setter raises(DOMException);
+
+ readonly attribute HTMLCollection rows;
+ readonly attribute HTMLCollection tBodies;
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString bgColor;
+ [Reflect] attribute DOMString border;
+ [Reflect] attribute DOMString cellPadding;
+ [Reflect] attribute DOMString cellSpacing;
+
+ [Reflect] attribute DOMString frame;
+
+ [Reflect] attribute DOMString rules;
+ [Reflect] attribute DOMString summary;
+ [Reflect] attribute DOMString width;
+
+ HTMLElement createTHead();
+ void deleteTHead();
+ HTMLElement createTFoot();
+ void deleteTFoot();
+ HTMLElement createTBody();
+ HTMLElement createCaption();
+ void deleteCaption();
+
+ HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+ void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+};
- interface HTMLTableElement : HTMLElement {
- attribute HTMLTableCaptionElement caption setter raises(DOMException);
- attribute HTMLTableSectionElement tHead setter raises(DOMException);
- attribute HTMLTableSectionElement tFoot setter raises(DOMException);
-
- readonly attribute HTMLCollection rows;
- readonly attribute HTMLCollection tBodies;
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString bgColor;
- attribute [Reflect] DOMString border;
- attribute [Reflect] DOMString cellPadding;
- attribute [Reflect] DOMString cellSpacing;
-
- attribute [Reflect] DOMString frame;
-
- attribute [Reflect] DOMString rules;
- attribute [Reflect] DOMString summary;
- attribute [Reflect] DOMString width;
-
- HTMLElement createTHead();
- void deleteTHead();
- HTMLElement createTFoot();
- void deleteTFoot();
- HTMLElement createTBody();
- HTMLElement createCaption();
- void deleteCaption();
-
- HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableRowElement.idl b/Source/WebCore/html/HTMLTableRowElement.idl
index b16d754af..15f054f9c 100644
--- a/Source/WebCore/html/HTMLTableRowElement.idl
+++ b/Source/WebCore/html/HTMLTableRowElement.idl
@@ -18,19 +18,16 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTableRowElement : HTMLElement {
+ readonly attribute long rowIndex;
+ readonly attribute long sectionRowIndex;
+ readonly attribute HTMLCollection cells;
+ [Reflect] attribute DOMString align;
+ [Reflect] attribute DOMString bgColor;
+ [Reflect=char] attribute DOMString ch;
+ [Reflect=charoff] attribute DOMString chOff;
+ [Reflect] attribute DOMString vAlign;
+ HTMLElement insertCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+ void deleteCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+};
- interface HTMLTableRowElement : HTMLElement {
- readonly attribute long rowIndex;
- readonly attribute long sectionRowIndex;
- readonly attribute HTMLCollection cells;
- attribute [Reflect] DOMString align;
- attribute [Reflect] DOMString bgColor;
- attribute [Reflect=char] DOMString ch;
- attribute [Reflect=charoff] DOMString chOff;
- attribute [Reflect] DOMString vAlign;
- HTMLElement insertCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- void deleteCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTableSectionElement.idl b/Source/WebCore/html/HTMLTableSectionElement.idl
index 88f53369b..d11f429cc 100644
--- a/Source/WebCore/html/HTMLTableSectionElement.idl
+++ b/Source/WebCore/html/HTMLTableSectionElement.idl
@@ -18,18 +18,15 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+[
+ JSGenerateToNativeObject
+] interface HTMLTableSectionElement : HTMLElement {
+ [Reflect] attribute DOMString align;
+ [Reflect=char] attribute DOMString ch;
+ [Reflect=charoff] attribute DOMString chOff;
+ [Reflect] attribute DOMString vAlign;
+ readonly attribute HTMLCollection rows;
+ HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+ void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+};
- interface [
- JSGenerateToNativeObject
- ] HTMLTableSectionElement : HTMLElement {
- attribute [Reflect] DOMString align;
- attribute [Reflect=char] DOMString ch;
- attribute [Reflect=charoff] DOMString chOff;
- attribute [Reflect] DOMString vAlign;
- readonly attribute HTMLCollection rows;
- HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTextAreaElement.cpp b/Source/WebCore/html/HTMLTextAreaElement.cpp
index a42aa7831..db98ccc9f 100644
--- a/Source/WebCore/html/HTMLTextAreaElement.cpp
+++ b/Source/WebCore/html/HTMLTextAreaElement.cpp
@@ -56,10 +56,15 @@ static const int defaultCols = 20;
// On submission, LF characters are converted into CRLF.
// This function returns number of characters considering this.
-static unsigned computeLengthForSubmission(const String& text)
+static inline unsigned computeLengthForSubmission(const String& text, unsigned numberOfLineBreaks)
+{
+ return numGraphemeClusters(text) + numberOfLineBreaks;
+}
+
+static unsigned numberOfLineBreaks(const String& text)
{
- unsigned count = numGraphemeClusters(text);
unsigned length = text.length();
+ unsigned count = 0;
for (unsigned i = 0; i < length; i++) {
if (text[i] == '\n')
count++;
@@ -67,6 +72,16 @@ static unsigned computeLengthForSubmission(const String& text)
return count;
}
+static inline unsigned computeLengthForSubmission(const String& text)
+{
+ return numGraphemeClusters(text) + numberOfLineBreaks(text);
+}
+
+static inline unsigned upperBoundForLengthForSubmission(const String& text, unsigned numberOfLineBreaks)
+{
+ return text.length() + numberOfLineBreaks;
+}
+
HTMLTextAreaElement::HTMLTextAreaElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form)
: HTMLTextFormControlElement(tagName, document, form)
, m_rows(defaultRows)
@@ -280,7 +295,13 @@ void HTMLTextAreaElement::handleBeforeTextInsertedEvent(BeforeTextInsertedEvent*
return;
unsigned unsignedMaxLength = static_cast<unsigned>(signedMaxLength);
- unsigned currentLength = computeLengthForSubmission(innerTextValue());
+ const String& currentValue = innerTextValue();
+ unsigned numberOfLineBreaksInCurrentValue = numberOfLineBreaks(currentValue);
+ if (upperBoundForLengthForSubmission(currentValue, numberOfLineBreaksInCurrentValue)
+ + upperBoundForLengthForSubmission(event->text(), numberOfLineBreaks(event->text())) < unsignedMaxLength)
+ return;
+
+ unsigned currentLength = computeLengthForSubmission(currentValue, numberOfLineBreaksInCurrentValue);
// selectionLength represents the selection length of this text field to be
// removed by this insertion.
// If the text field has no focus, we don't need to take account of the
@@ -466,7 +487,10 @@ bool HTMLTextAreaElement::tooLong(const String& value, NeedsToCheckDirtyFlag che
int max = maxLength();
if (max < 0)
return false;
- return computeLengthForSubmission(value) > static_cast<unsigned>(max);
+ unsigned unsignedMax = static_cast<unsigned>(max);
+ unsigned numberOfLineBreaksInValue = numberOfLineBreaks(value);
+ return upperBoundForLengthForSubmission(value, numberOfLineBreaksInValue) > unsignedMax
+ && computeLengthForSubmission(value, numberOfLineBreaksInValue) > unsignedMax;
}
bool HTMLTextAreaElement::isValidValue(const String& candidate) const
diff --git a/Source/WebCore/html/HTMLTextAreaElement.idl b/Source/WebCore/html/HTMLTextAreaElement.idl
index 729e6dae6..df8867ace 100644
--- a/Source/WebCore/html/HTMLTextAreaElement.idl
+++ b/Source/WebCore/html/HTMLTextAreaElement.idl
@@ -19,49 +19,46 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTextAreaElement : HTMLElement {
+ [Reflect] attribute boolean autofocus;
+ attribute long cols;
+ [Reflect] attribute DOMString dirName;
+ [Reflect] attribute boolean disabled;
+ readonly attribute HTMLFormElement form;
+ attribute long maxLength setter raises(DOMException);
+ [Reflect] attribute DOMString name;
+ [Reflect] attribute DOMString placeholder;
+ [Reflect] attribute boolean readOnly;
+ [Reflect] attribute boolean required;
+ attribute long rows;
+ [Reflect] attribute DOMString wrap;
- interface HTMLTextAreaElement : HTMLElement {
- attribute [Reflect] boolean autofocus;
- attribute long cols;
- attribute [Reflect] DOMString dirName;
- attribute [Reflect] boolean disabled;
- readonly attribute HTMLFormElement form;
- attribute long maxLength setter raises(DOMException);
- attribute [Reflect] DOMString name;
- attribute [Reflect] DOMString placeholder;
- attribute [Reflect] boolean readOnly;
- attribute [Reflect] boolean required;
- attribute long rows;
- attribute [Reflect] DOMString wrap;
+ readonly attribute DOMString type;
+ [TreatNullAs=NullString] attribute DOMString defaultValue;
+ [TreatNullAs=NullString] attribute DOMString value;
+ readonly attribute unsigned long textLength;
- readonly attribute DOMString type;
- attribute [TreatNullAs=NullString] DOMString defaultValue;
- attribute [TreatNullAs=NullString] DOMString value;
- readonly attribute unsigned long textLength;
+ readonly attribute boolean willValidate;
+ readonly attribute ValidityState validity;
+ readonly attribute DOMString validationMessage;
+ boolean checkValidity();
+ void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
- readonly attribute boolean willValidate;
- readonly attribute ValidityState validity;
- readonly attribute DOMString validationMessage;
- boolean checkValidity();
- void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+ readonly attribute NodeList labels;
- readonly attribute NodeList labels;
-
- void select();
- attribute long selectionStart;
- attribute long selectionEnd;
- attribute DOMString selectionDirection;
+ void select();
+ attribute long selectionStart;
+ attribute long selectionEnd;
+ attribute DOMString selectionDirection;
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- void setSelectionRange(in long start, in long end);
+ void setSelectionRange(in long start, in long end);
#else
- void setSelectionRange(in [Optional=DefaultIsUndefined] long start,
- in [Optional=DefaultIsUndefined] long end,
- in [Optional] DOMString direction);
+ void setSelectionRange(in [Optional=DefaultIsUndefined] long start,
+ in [Optional=DefaultIsUndefined] long end,
+ in [Optional] DOMString direction);
#endif
#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
- attribute [Reflect] DOMString accessKey;
+ [Reflect] attribute DOMString accessKey;
#endif
- };
-}
+};
diff --git a/Source/WebCore/html/HTMLTextFormControlElement.cpp b/Source/WebCore/html/HTMLTextFormControlElement.cpp
index 70c06191e..fcde35ae6 100644
--- a/Source/WebCore/html/HTMLTextFormControlElement.cpp
+++ b/Source/WebCore/html/HTMLTextFormControlElement.cpp
@@ -159,9 +159,7 @@ void HTMLTextFormControlElement::updatePlaceholderVisibility(bool placeholderVal
HTMLElement* placeholder = placeholderElement();
if (!placeholder)
return;
- ExceptionCode ec = 0;
- placeholder->setInlineStyleProperty(CSSPropertyVisibility, placeholderShouldBeVisible() ? "visible" : "hidden", ec);
- ASSERT(!ec);
+ placeholder->setInlineStyleProperty(CSSPropertyVisibility, placeholderShouldBeVisible() ? "visible" : "hidden");
}
void HTMLTextFormControlElement::fixPlaceholderRenderer(HTMLElement* placeholder, HTMLElement* siblingElement)
diff --git a/Source/WebCore/html/HTMLTitleElement.idl b/Source/WebCore/html/HTMLTitleElement.idl
index e691f7b13..f5639fe17 100644
--- a/Source/WebCore/html/HTMLTitleElement.idl
+++ b/Source/WebCore/html/HTMLTitleElement.idl
@@ -17,10 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLTitleElement : HTMLElement {
+ [TreatNullAs=NullString] attribute DOMString text;
+};
- interface HTMLTitleElement : HTMLElement {
- attribute [TreatNullAs=NullString] DOMString text;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLTrackElement.idl b/Source/WebCore/html/HTMLTrackElement.idl
index 3e98fed66..07b781bba 100644
--- a/Source/WebCore/html/HTMLTrackElement.idl
+++ b/Source/WebCore/html/HTMLTrackElement.idl
@@ -23,24 +23,22 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack
- ] HTMLTrackElement : HTMLElement {
- attribute DOMString kind;
- attribute [Reflect, URL] DOMString src;
- attribute DOMString srclang;
- attribute DOMString label;
- attribute [Reflect] boolean default;
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack
+] interface HTMLTrackElement : HTMLElement {
+ attribute DOMString kind;
+ [Reflect, URL] attribute DOMString src;
+ attribute DOMString srclang;
+ attribute DOMString label;
+ [Reflect] attribute boolean default;
- const unsigned short NONE = 0;
- const unsigned short LOADING = 1;
- const unsigned short LOADED = 2;
- // Reflect is used for ERROR because it conflicts with a windows define.
- [Reflect=TRACK_ERROR] const unsigned short ERROR = 3;
- readonly attribute unsigned short readyState;
+ const unsigned short NONE = 0;
+ const unsigned short LOADING = 1;
+ const unsigned short LOADED = 2;
+ // Reflect is used for ERROR because it conflicts with a windows define.
+ [Reflect=TRACK_ERROR] const unsigned short ERROR = 3;
+ readonly attribute unsigned short readyState;
- readonly attribute TextTrack track;
+ readonly attribute TextTrack track;
};
-}
diff --git a/Source/WebCore/html/HTMLUListElement.idl b/Source/WebCore/html/HTMLUListElement.idl
index 221dcca58..e40350d83 100644
--- a/Source/WebCore/html/HTMLUListElement.idl
+++ b/Source/WebCore/html/HTMLUListElement.idl
@@ -17,11 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
-module html {
+interface HTMLUListElement : HTMLElement {
+ [Reflect] attribute boolean compact;
+ [Reflect] attribute DOMString type;
+};
- interface HTMLUListElement : HTMLElement {
- attribute [Reflect] boolean compact;
- attribute [Reflect] DOMString type;
- };
-
-}
diff --git a/Source/WebCore/html/HTMLUnknownElement.idl b/Source/WebCore/html/HTMLUnknownElement.idl
index 9e4f90afa..fe1ca9eda 100644
--- a/Source/WebCore/html/HTMLUnknownElement.idl
+++ b/Source/WebCore/html/HTMLUnknownElement.idl
@@ -27,9 +27,6 @@
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+interface HTMLUnknownElement : HTMLElement {
+};
- interface HTMLUnknownElement : HTMLElement {
- };
-
-}
diff --git a/Source/WebCore/html/HTMLVideoElement.idl b/Source/WebCore/html/HTMLVideoElement.idl
index 97a17796e..dba44083b 100644
--- a/Source/WebCore/html/HTMLVideoElement.idl
+++ b/Source/WebCore/html/HTMLVideoElement.idl
@@ -23,33 +23,31 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO,
- JSGenerateToNativeObject
- ] HTMLVideoElement : HTMLMediaElement {
- attribute [Reflect] unsigned long width;
- attribute [Reflect] unsigned long height;
- readonly attribute unsigned long videoWidth;
- readonly attribute unsigned long videoHeight;
- attribute [Reflect, URL] DOMString poster;
+[
+ Conditional=VIDEO,
+ JSGenerateToNativeObject
+] interface HTMLVideoElement : HTMLMediaElement {
+ [Reflect] attribute unsigned long width;
+ [Reflect] attribute unsigned long height;
+ readonly attribute unsigned long videoWidth;
+ readonly attribute unsigned long videoHeight;
+ [Reflect, URL] attribute DOMString poster;
- readonly attribute boolean webkitSupportsFullscreen;
- readonly attribute boolean webkitDisplayingFullscreen;
+ readonly attribute boolean webkitSupportsFullscreen;
+ readonly attribute boolean webkitDisplayingFullscreen;
- void webkitEnterFullscreen() raises (DOMException);
- void webkitExitFullscreen();
+ void webkitEnterFullscreen() raises (DOMException);
+ void webkitExitFullscreen();
- // Note the different capitalization of the "S" in FullScreen.
- void webkitEnterFullScreen() raises (DOMException);
- void webkitExitFullScreen();
+ // Note the different capitalization of the "S" in FullScreen.
+ void webkitEnterFullScreen() raises (DOMException);
+ void webkitExitFullScreen();
- // The number of frames that have been decoded and made available for
- // playback.
- readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitDecodedFrameCount;
+ // The number of frames that have been decoded and made available for
+ // playback.
+ [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitDecodedFrameCount;
- // The number of decoded frames that have been dropped by the player
- // for performance reasons during playback.
- readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitDroppedFrameCount;
- };
-}
+ // The number of decoded frames that have been dropped by the player
+ // for performance reasons during playback.
+ [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitDroppedFrameCount;
+};
diff --git a/Source/WebCore/html/ImageData.idl b/Source/WebCore/html/ImageData.idl
index f2ea0ca6b..ca3195f3b 100644
--- a/Source/WebCore/html/ImageData.idl
+++ b/Source/WebCore/html/ImageData.idl
@@ -26,16 +26,13 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface [
- CustomToJSObject
- ] ImageData {
- readonly attribute long width;
- readonly attribute long height;
+[
+ CustomToJSObject
+] interface ImageData {
+ readonly attribute long width;
+ readonly attribute long height;
#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
- readonly attribute Uint8ClampedArray data;
+ readonly attribute Uint8ClampedArray data;
#endif
- };
+};
-}
diff --git a/Source/WebCore/html/ImageDocument.cpp b/Source/WebCore/html/ImageDocument.cpp
index 0afd276c1..5fc9268fb 100644
--- a/Source/WebCore/html/ImageDocument.cpp
+++ b/Source/WebCore/html/ImageDocument.cpp
@@ -40,6 +40,7 @@
#include "NotImplemented.h"
#include "Page.h"
#include "RawDataDocumentParser.h"
+#include "ResourceBuffer.h"
#include "Settings.h"
using std::min;
@@ -141,7 +142,7 @@ void ImageDocumentParser::finish()
{
if (!isStopped() && document()->imageElement()) {
CachedImage* cachedImage = document()->cachedImage();
- RefPtr<SharedBuffer> data = document()->frame()->loader()->documentLoader()->mainResourceData();
+ RefPtr<ResourceBuffer> data = document()->frame()->loader()->documentLoader()->mainResourceData();
// If this is a multipart image, make a copy of the current part, since the resource data
// will be overwritten by the next part.
diff --git a/Source/WebCore/html/MediaController.idl b/Source/WebCore/html/MediaController.idl
index d3f33485b..31443a1db 100644
--- a/Source/WebCore/html/MediaController.idl
+++ b/Source/WebCore/html/MediaController.idl
@@ -23,41 +23,39 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO,
- Constructor,
- CallWith=ScriptExecutionContext,
- JSGenerateToJSObject,
- EventTarget
- ] MediaController {
- readonly attribute TimeRanges buffered;
- readonly attribute TimeRanges seekable;
+[
+ Conditional=VIDEO,
+ Constructor,
+ CallWith=ScriptExecutionContext,
+ JSGenerateToJSObject,
+ EventTarget
+] interface MediaController {
+ readonly attribute TimeRanges buffered;
+ readonly attribute TimeRanges seekable;
- readonly attribute double duration;
- attribute double currentTime
- setter raises (DOMException);
+ readonly attribute double duration;
+ attribute double currentTime
+ setter raises (DOMException);
- readonly attribute boolean paused;
- readonly attribute TimeRanges played;
- void play();
- void pause();
+ readonly attribute boolean paused;
+ readonly attribute TimeRanges played;
+ void play();
+ void pause();
- attribute double defaultPlaybackRate;
- attribute double playbackRate;
+ attribute double defaultPlaybackRate;
+ attribute double playbackRate;
- attribute double volume
- setter raises (DOMException);
- attribute boolean muted;
+ attribute double volume
+ setter raises (DOMException);
+ attribute boolean muted;
- // EventTarget interface
- void addEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- void removeEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
- };
-}
+ // EventTarget interface
+ void addEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ void removeEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ boolean dispatchEvent(in Event evt)
+ raises(EventException);
+};
diff --git a/Source/WebCore/html/MediaError.idl b/Source/WebCore/html/MediaError.idl
index 8eb9d5402..95e7c84ce 100644
--- a/Source/WebCore/html/MediaError.idl
+++ b/Source/WebCore/html/MediaError.idl
@@ -23,17 +23,15 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=VIDEO
- ] MediaError {
- const unsigned short MEDIA_ERR_ABORTED = 1;
- const unsigned short MEDIA_ERR_NETWORK = 2;
- const unsigned short MEDIA_ERR_DECODE = 3;
- const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
+[
+ Conditional=VIDEO
+] interface MediaError {
+ const unsigned short MEDIA_ERR_ABORTED = 1;
+ const unsigned short MEDIA_ERR_NETWORK = 2;
+ const unsigned short MEDIA_ERR_DECODE = 3;
+ const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
- const unsigned short MEDIA_ERR_ENCRYPTED = 5;
+ const unsigned short MEDIA_ERR_ENCRYPTED = 5;
#endif
- readonly attribute unsigned short code;
- };
-}
+ readonly attribute unsigned short code;
+};
diff --git a/Source/WebCore/html/MediaKeyError.idl b/Source/WebCore/html/MediaKeyError.idl
index 55b9b04d0..5877d5255 100644
--- a/Source/WebCore/html/MediaKeyError.idl
+++ b/Source/WebCore/html/MediaKeyError.idl
@@ -23,17 +23,15 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=ENCRYPTED_MEDIA,
- V8EnabledAtRuntime=encryptedMedia,
- ] MediaKeyError {
- const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
- const unsigned short MEDIA_KEYERR_CLIENT = 2;
- const unsigned short MEDIA_KEYERR_SERVICE = 3;
- const unsigned short MEDIA_KEYERR_OUTPUT = 4;
- const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
- const unsigned short MEDIA_KEYERR_DOMAIN = 6;
- readonly attribute unsigned short code;
- };
-}
+[
+ Conditional=ENCRYPTED_MEDIA,
+ V8EnabledAtRuntime=encryptedMedia,
+] interface MediaKeyError {
+ const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
+ const unsigned short MEDIA_KEYERR_CLIENT = 2;
+ const unsigned short MEDIA_KEYERR_SERVICE = 3;
+ const unsigned short MEDIA_KEYERR_OUTPUT = 4;
+ const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
+ const unsigned short MEDIA_KEYERR_DOMAIN = 6;
+ readonly attribute unsigned short code;
+};
diff --git a/Source/WebCore/html/MediaKeyEvent.idl b/Source/WebCore/html/MediaKeyEvent.idl
index b1387dcfc..f4d0d8605 100644
--- a/Source/WebCore/html/MediaKeyEvent.idl
+++ b/Source/WebCore/html/MediaKeyEvent.idl
@@ -23,20 +23,17 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=ENCRYPTED_MEDIA,
+ V8EnabledAtRuntime=encryptedMedia,
+ ConstructorTemplate=Event
+] interface MediaKeyEvent : Event {
+ [InitializedByEventConstructor] readonly attribute DOMString keySystem;
+ [InitializedByEventConstructor] readonly attribute DOMString sessionId;
+ [InitializedByEventConstructor] readonly attribute Uint8Array initData;
+ [InitializedByEventConstructor] readonly attribute Uint8Array message;
+ [InitializedByEventConstructor] readonly attribute DOMString defaultURL;
+ [InitializedByEventConstructor] readonly attribute MediaKeyError errorCode;
+ [InitializedByEventConstructor] readonly attribute unsigned short systemCode;
+};
- interface [
- Conditional=ENCRYPTED_MEDIA,
- V8EnabledAtRuntime=encryptedMedia,
- ConstructorTemplate=Event
- ] MediaKeyEvent : Event {
- readonly attribute [InitializedByEventConstructor] DOMString keySystem;
- readonly attribute [InitializedByEventConstructor] DOMString sessionId;
- readonly attribute [InitializedByEventConstructor] Uint8Array initData;
- readonly attribute [InitializedByEventConstructor] Uint8Array message;
- readonly attribute [InitializedByEventConstructor] DOMString defaultURL;
- readonly attribute [InitializedByEventConstructor] MediaKeyError errorCode;
- readonly attribute [InitializedByEventConstructor] unsigned short systemCode;
- };
-
-}
diff --git a/Source/WebCore/html/MicroDataItemValue.idl b/Source/WebCore/html/MicroDataItemValue.idl
index 5522b4fff..5b29ed542 100644
--- a/Source/WebCore/html/MicroDataItemValue.idl
+++ b/Source/WebCore/html/MicroDataItemValue.idl
@@ -28,12 +28,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=MICRODATA,
- CustomToJSObject,
- OmitConstructor
- ] MicroDataItemValue {
- };
-}
-
+[
+ Conditional=MICRODATA,
+ CustomToJSObject,
+ OmitConstructor
+] interface MicroDataItemValue {
+};
diff --git a/Source/WebCore/html/MonthInputType.cpp b/Source/WebCore/html/MonthInputType.cpp
index fc672e3ee..b58743878 100644
--- a/Source/WebCore/html/MonthInputType.cpp
+++ b/Source/WebCore/html/MonthInputType.cpp
@@ -42,6 +42,13 @@
#if ENABLE(INPUT_TYPE_MONTH)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateTimeFieldsState.h"
+#include "LocalizedStrings.h"
+#include "Localizer.h"
+#include <wtf/text/WTFString.h>
+#endif
+
namespace WebCore {
using namespace HTMLNames;
@@ -137,6 +144,24 @@ bool MonthInputType::isMonthField() const
return true;
}
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+String MonthInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+{
+ if (!dateTimeFieldsState.hasMonth() || !dateTimeFieldsState.hasYear())
+ return emptyString();
+ return String::format("%04u-%02u", dateTimeFieldsState.year(), dateTimeFieldsState.month());
+}
+
+void MonthInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
+{
+ layoutParameters.dateTimeFormat = monthFormatInLDML();
+ layoutParameters.fallbackDateTimeFormat = "MM/yyyy";
+ layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
+ layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+ layoutParameters.placeholderForMonth = "--";
+ layoutParameters.placeholderForYear = "----";
+}
+#endif
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/MonthInputType.h b/Source/WebCore/html/MonthInputType.h
index 8f24fa785..3d4f59c6c 100644
--- a/Source/WebCore/html/MonthInputType.h
+++ b/Source/WebCore/html/MonthInputType.h
@@ -31,18 +31,23 @@
#ifndef MonthInputType_h
#define MonthInputType_h
-#include "BaseDateAndTimeInputType.h"
-
#if ENABLE(INPUT_TYPE_MONTH)
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
namespace WebCore {
-class MonthInputType : public BaseDateAndTimeInputType {
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseMonthInputType;
+#else
+typedef BaseDateAndTimeInputType BaseMonthInputType;
+#endif
+
+class MonthInputType : public BaseMonthInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
private:
- MonthInputType(HTMLInputElement* element) : BaseDateAndTimeInputType(element) { }
+ MonthInputType(HTMLInputElement* element) : BaseMonthInputType(element) { }
virtual const AtomicString& formControlType() const OVERRIDE;
virtual DateComponents::Type dateType() const OVERRIDE;
virtual double valueAsDate() const OVERRIDE;
@@ -53,6 +58,12 @@ private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isMonthField() const OVERRIDE;
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE FINAL;
+#endif
};
} // namespace WebCore
diff --git a/Source/WebCore/html/NumberInputType.cpp b/Source/WebCore/html/NumberInputType.cpp
index 794545dc9..306bf8fb6 100644
--- a/Source/WebCore/html/NumberInputType.cpp
+++ b/Source/WebCore/html/NumberInputType.cpp
@@ -39,7 +39,7 @@
#include "HTMLParserIdioms.h"
#include "InputTypeNames.h"
#include "KeyboardEvent.h"
-#include "LocalizedNumber.h"
+#include "Localizer.h"
#include "RenderTextControl.h"
#include <limits>
#include <wtf/ASCIICType.h>
@@ -235,7 +235,7 @@ String NumberInputType::localizeValue(const String& proposedValue) const
// We don't localize scientific notations.
if (proposedValue.find(isE) != notFound)
return proposedValue;
- return convertToLocalizedNumber(proposedValue);
+ return element()->localizer().convertToLocalizedNumber(proposedValue);
}
String NumberInputType::visibleValue() const
@@ -250,7 +250,7 @@ String NumberInputType::convertFromVisibleValue(const String& visibleValue) cons
// We don't localize scientific notations.
if (visibleValue.find(isE) != notFound)
return visibleValue;
- return convertFromLocalizedNumber(visibleValue);
+ return element()->localizer().convertFromLocalizedNumber(visibleValue);
}
bool NumberInputType::isAcceptableValue(const String& proposedValue)
diff --git a/Source/WebCore/html/RadioNodeList.idl b/Source/WebCore/html/RadioNodeList.idl
index 8ed57bacd..7cae4859c 100644
--- a/Source/WebCore/html/RadioNodeList.idl
+++ b/Source/WebCore/html/RadioNodeList.idl
@@ -23,13 +23,9 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface [
- JSGenerateToJSObject,
- IndexedGetter,
- ] RadioNodeList : NodeList {
- attribute DOMString value;
- };
-}
-
+[
+ JSGenerateToJSObject,
+ IndexedGetter,
+] interface RadioNodeList : NodeList {
+ attribute DOMString value;
+};
diff --git a/Source/WebCore/html/TextFieldInputType.cpp b/Source/WebCore/html/TextFieldInputType.cpp
index 692121e5c..3e6c1ee7c 100644
--- a/Source/WebCore/html/TextFieldInputType.cpp
+++ b/Source/WebCore/html/TextFieldInputType.cpp
@@ -381,6 +381,10 @@ void TextFieldInputType::handleBeforeTextInsertedEvent(BeforeTextInsertedEvent*
// Truncate the inserted text to avoid violating the maxLength and other constraints.
String eventText = event->text();
+ unsigned textLength = eventText.length();
+ while (textLength > 0 && isASCIILineBreak(eventText[textLength - 1]))
+ textLength--;
+ eventText.truncate(textLength);
eventText.replace("\r\n", " ");
eventText.replace('\r', ' ');
eventText.replace('\n', ' ');
diff --git a/Source/WebCore/html/TextMetrics.idl b/Source/WebCore/html/TextMetrics.idl
index 1a315bac2..eb015a7fe 100644
--- a/Source/WebCore/html/TextMetrics.idl
+++ b/Source/WebCore/html/TextMetrics.idl
@@ -23,10 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+interface TextMetrics {
+ readonly attribute float width;
+};
- interface TextMetrics {
- readonly attribute float width;
- };
-
-}
diff --git a/Source/WebCore/html/TimeInputType.cpp b/Source/WebCore/html/TimeInputType.cpp
index a0051513a..789cd3fee 100644
--- a/Source/WebCore/html/TimeInputType.cpp
+++ b/Source/WebCore/html/TimeInputType.cpp
@@ -41,13 +41,10 @@
#include <wtf/PassOwnPtr.h>
#if ENABLE(INPUT_TYPE_TIME)
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldsState.h"
-#include "ElementShadow.h"
-#include "FormController.h"
-#include "KeyboardEvent.h"
#include "Localizer.h"
-#include "ShadowRoot.h"
#include <wtf/text/WTFString.h>
#endif
@@ -59,6 +56,11 @@ static const int timeDefaultStep = 60;
static const int timeDefaultStepBase = 0;
static const int timeStepScaleFactor = 1000;
+TimeInputType::TimeInputType(HTMLInputElement* element)
+ : BaseTimeInputType(element)
+{
+}
+
PassOwnPtr<InputType> TimeInputType::create(HTMLInputElement* element)
{
return adoptPtr(new TimeInputType(element));
@@ -118,47 +120,21 @@ bool TimeInputType::isTimeField() const
return true;
}
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
-
-TimeInputType::DateTimeEditControlOwnerImpl::DateTimeEditControlOwnerImpl(TimeInputType& timeInputType)
- : m_timeInputType(timeInputType)
-{
-}
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
-TimeInputType::DateTimeEditControlOwnerImpl::~DateTimeEditControlOwnerImpl()
+String TimeInputType::localizeValue(const String& proposedValue) const
{
-}
-
-void TimeInputType::DateTimeEditControlOwnerImpl::didBlurFromControl()
-{
- // We don't need to call blur(). This function is called when control
- // lost focus.
-
- // Remove focus ring by CSS "focus" pseudo class.
- m_timeInputType.element()->setFocus(false);
-}
-
-void TimeInputType::DateTimeEditControlOwnerImpl::didFocusOnControl()
-{
- // We don't need to call focus(). This function is called when control
- // got focus.
+ DateComponents date;
+ if (!parseToDateComponents(proposedValue, &date))
+ return proposedValue;
- // Add focus ring by CSS "focus" pseudo class.
- m_timeInputType.element()->setFocus(true);
-}
+ Localizer::FormatType formatType = shouldHaveSecondField(date) ? Localizer::FormatTypeMedium : Localizer::FormatTypeShort;
-void TimeInputType::DateTimeEditControlOwnerImpl::editControlValueChanged()
-{
- RefPtr<HTMLInputElement> input(m_timeInputType.element());
- input->setValueInternal(m_timeInputType.m_dateTimeEditElement->value(), DispatchNoEvent);
- input->setNeedsStyleRecalc();
- input->dispatchFormControlInputEvent();
- input->dispatchFormControlChangeEvent();
- input->notifyFormStateChanged();
+ String localized = element()->localizer().formatDateTime(date, formatType);
+ return localized.isEmpty() ? proposedValue : localized;
}
-
-String TimeInputType::DateTimeEditControlOwnerImpl::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+String TimeInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
{
if (!dateTimeFieldsState.hasHour() || !dateTimeFieldsState.hasMinute() || !dateTimeFieldsState.hasAMPM())
return emptyString();
@@ -176,179 +152,15 @@ String TimeInputType::DateTimeEditControlOwnerImpl::formatDateTimeFieldsState(co
return String::format("%02u:%02u", dateTimeFieldsState.hour23(), dateTimeFieldsState.minute());
}
-bool TimeInputType::hasCustomFocusLogic() const
-{
- return false;
-}
-
-bool TimeInputType::DateTimeEditControlOwnerImpl::isEditControlOwnerDisabled() const
-{
- return m_timeInputType.element()->readOnly();
-}
-
-bool TimeInputType::DateTimeEditControlOwnerImpl::isEditControlOwnerReadOnly() const
-{
- return m_timeInputType.element()->disabled();
-}
-
-TimeInputType::TimeInputType(HTMLInputElement* element)
- : BaseDateAndTimeInputType(element)
- , m_dateTimeEditElement(0)
- , m_dateTimeEditControlOwnerImpl(*this)
-{
-}
-
-TimeInputType::~TimeInputType()
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->removeEditControlOwner();
-}
-
-void TimeInputType::blur()
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->blurByOwner();
-}
-
-RenderObject* TimeInputType::createRenderer(RenderArena* arena, RenderStyle* style) const
-{
- return InputType::createRenderer(arena, style);
-}
-
-void TimeInputType::createShadowSubtree()
-{
- ASSERT(element()->shadow());
-
- RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(element()->document(), m_dateTimeEditControlOwnerImpl));
- m_dateTimeEditElement = dateTimeEditElement.get();
- element()->userAgentShadowRoot()->appendChild(m_dateTimeEditElement);
- updateInnerTextValue();
-}
-
-void TimeInputType::destroyShadowSubtree()
-{
- if (m_dateTimeEditElement) {
- m_dateTimeEditElement->removeEditControlOwner();
- m_dateTimeEditElement = 0;
- }
- BaseDateAndTimeInputType::destroyShadowSubtree();
-}
-
-void TimeInputType::focus(bool)
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->focusByOwner();
-}
-
-void TimeInputType::forwardEvent(Event* event)
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->defaultEventHandler(event);
-}
-
-void TimeInputType::disabledAttributeChanged()
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->disabledStateChanged();
-}
-
-void TimeInputType::handleKeydownEvent(KeyboardEvent* event)
-{
- forwardEvent(event);
-}
-
-bool TimeInputType::isKeyboardFocusable(KeyboardEvent*) const
-{
- return false;
-}
-
-bool TimeInputType::isMouseFocusable() const
-{
- return false;
-}
-
-void TimeInputType::minOrMaxAttributeChanged()
-{
- updateInnerTextValue();
-}
-
-void TimeInputType::readonlyAttributeChanged()
-{
- if (m_dateTimeEditElement)
- m_dateTimeEditElement->readOnlyStateChanged();
-}
-
-bool TimeInputType::isTextField() const
-{
- return false;
-}
-
-void TimeInputType::restoreFormControlState(const FormControlState& state)
+void TimeInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& date) const
{
- if (!m_dateTimeEditElement)
- return;
- DateComponents date;
- setMillisecondToDateComponents(createStepRange(AnyIsDefaultStep).minimum().toDouble(), &date);
- DateTimeFieldsState dateTimeFieldsState = DateTimeFieldsState::restoreFormControlState(state);
- m_dateTimeEditElement->setValueAsDateTimeFieldsState(dateTimeFieldsState, date);
- element()->setValueInternal(m_dateTimeEditElement->value(), DispatchNoEvent);
-}
-
-FormControlState TimeInputType::saveFormControlState() const
-{
- if (!m_dateTimeEditElement)
- return FormControlState();
-
- return m_dateTimeEditElement->valueAsDateTimeFieldsState().saveFormControlState();
-}
-
-void TimeInputType::setValue(const String& sanitizedValue, bool valueChanged, TextFieldEventBehavior eventBehavior)
-{
- InputType::setValue(sanitizedValue, valueChanged, eventBehavior);
- if (valueChanged)
- updateInnerTextValue();
-}
-
-bool TimeInputType::shouldUseInputMethod() const
-{
- return false;
-}
-
-void TimeInputType::stepAttributeChanged()
-{
- updateInnerTextValue();
-}
-
-void TimeInputType::updateInnerTextValue()
-{
- if (!m_dateTimeEditElement)
- return;
-
- Localizer& localizer = element()->document()->getLocalizer(element()->computeInheritedLanguage());
- DateTimeEditElement::LayoutParameters layoutParameters(localizer, createStepRange(AnyIsDefaultStep));
-
- DateComponents date;
- const bool hasValue = parseToDateComponents(element()->value(), &date);
- if (!hasValue)
- setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date);
-
- if (date.second() || layoutParameters.shouldHaveSecondField()) {
- layoutParameters.dateTimeFormat = localizer.timeFormat();
+ if (shouldHaveSecondField(date)) {
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.timeFormat();
layoutParameters.fallbackDateTimeFormat = "HH:mm:ss";
} else {
- layoutParameters.dateTimeFormat = localizer.shortTimeFormat();
+ layoutParameters.dateTimeFormat = layoutParameters.localizer.shortTimeFormat();
layoutParameters.fallbackDateTimeFormat = "HH:mm";
}
-
- if (hasValue)
- m_dateTimeEditElement->setValueAsDate(layoutParameters, date);
- else
- m_dateTimeEditElement->setEmptyValue(layoutParameters, date);
-}
-#else
-TimeInputType::TimeInputType(HTMLInputElement* element)
- : BaseDateAndTimeInputType(element)
-{
}
#endif
diff --git a/Source/WebCore/html/TimeInputType.h b/Source/WebCore/html/TimeInputType.h
index 59e272102..dafd58dfb 100644
--- a/Source/WebCore/html/TimeInputType.h
+++ b/Source/WebCore/html/TimeInputType.h
@@ -31,24 +31,21 @@
#ifndef TimeInputType_h
#define TimeInputType_h
-#include "BaseDateAndTimeInputType.h"
-
#if ENABLE(INPUT_TYPE_TIME)
-
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
-#include "DateTimeEditElement.h"
-#endif
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
namespace WebCore {
-class TimeInputType : public BaseDateAndTimeInputType {
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseTimeInputType;
+#else
+typedef BaseDateAndTimeInputType BaseTimeInputType;
+#endif
+
+class TimeInputType : public BaseTimeInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
- virtual ~TimeInputType();
-#endif
-
private:
TimeInputType(HTMLInputElement*);
virtual const AtomicString& formControlType() const OVERRIDE;
@@ -58,52 +55,12 @@ private:
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isTimeField() const OVERRIDE;
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ virtual String localizeValue(const String&) const OVERRIDE;
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
- class DateTimeEditControlOwnerImpl : public DateTimeEditElement::EditControlOwner {
- WTF_MAKE_NONCOPYABLE(DateTimeEditControlOwnerImpl);
-
- public:
- DateTimeEditControlOwnerImpl(TimeInputType&);
- virtual ~DateTimeEditControlOwnerImpl();
-
- private:
- virtual void didBlurFromControl() OVERRIDE FINAL;
- virtual void didFocusOnControl() OVERRIDE FINAL;
- virtual void editControlValueChanged() OVERRIDE FINAL;
- virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
- virtual bool isEditControlOwnerDisabled() const OVERRIDE FINAL;
- virtual bool isEditControlOwnerReadOnly() const OVERRIDE FINAL;
-
- TimeInputType& m_timeInputType;
- };
-
- friend class DateTimeEditControlOwnerImpl;
-
- // InputType functions
- virtual void blur() OVERRIDE FINAL;
- virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const OVERRIDE FINAL;
- virtual void createShadowSubtree() OVERRIDE FINAL;
- virtual void destroyShadowSubtree() OVERRIDE FINAL;
- virtual void disabledAttributeChanged() OVERRIDE FINAL;
- virtual void focus(bool restorePreviousSelection) OVERRIDE FINAL;
- virtual void forwardEvent(Event*) OVERRIDE FINAL;
- virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE FINAL;
- virtual bool hasCustomFocusLogic() const OVERRIDE FINAL;
- virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE FINAL;
- virtual bool isMouseFocusable() const OVERRIDE FINAL;
- virtual bool isTextField() const OVERRIDE FINAL;
- virtual void minOrMaxAttributeChanged() OVERRIDE FINAL;
- virtual void readonlyAttributeChanged() OVERRIDE FINAL;
- virtual void restoreFormControlState(const FormControlState&) OVERRIDE FINAL;
- virtual FormControlState saveFormControlState() const OVERRIDE FINAL;
- virtual void setValue(const String&, bool valueChanged, TextFieldEventBehavior) OVERRIDE FINAL;
- virtual bool shouldUseInputMethod() const OVERRIDE FINAL;
- virtual void stepAttributeChanged() OVERRIDE FINAL;
- virtual void updateInnerTextValue() OVERRIDE FINAL;
-
- DateTimeEditElement* m_dateTimeEditElement;
- DateTimeEditControlOwnerImpl m_dateTimeEditControlOwnerImpl;
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE FINAL;
#endif
};
diff --git a/Source/WebCore/html/TimeRanges.idl b/Source/WebCore/html/TimeRanges.idl
index c37c360db..97cd46194 100644
--- a/Source/WebCore/html/TimeRanges.idl
+++ b/Source/WebCore/html/TimeRanges.idl
@@ -23,16 +23,13 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO
+] interface TimeRanges {
+ readonly attribute unsigned long length;
+ float start(in unsigned long index)
+ raises (DOMException);
+ float end(in unsigned long index)
+ raises (DOMException);
+};
- interface [
- Conditional=VIDEO
- ] TimeRanges {
- readonly attribute unsigned long length;
- float start(in unsigned long index)
- raises (DOMException);
- float end(in unsigned long index)
- raises (DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/ValidityState.idl b/Source/WebCore/html/ValidityState.idl
index 601bfafed..dae343b9a 100644
--- a/Source/WebCore/html/ValidityState.idl
+++ b/Source/WebCore/html/ValidityState.idl
@@ -20,19 +20,16 @@
*
*/
-module html {
-
- interface [
- OmitConstructor
- ] ValidityState {
- readonly attribute boolean valueMissing;
- readonly attribute boolean typeMismatch;
- readonly attribute boolean patternMismatch;
- readonly attribute boolean tooLong;
- readonly attribute boolean rangeUnderflow;
- readonly attribute boolean rangeOverflow;
- readonly attribute boolean stepMismatch;
- readonly attribute boolean customError;
- readonly attribute boolean valid;
- };
-}
+[
+ OmitConstructor
+] interface ValidityState {
+ readonly attribute boolean valueMissing;
+ readonly attribute boolean typeMismatch;
+ readonly attribute boolean patternMismatch;
+ readonly attribute boolean tooLong;
+ readonly attribute boolean rangeUnderflow;
+ readonly attribute boolean rangeOverflow;
+ readonly attribute boolean stepMismatch;
+ readonly attribute boolean customError;
+ readonly attribute boolean valid;
+};
diff --git a/Source/WebCore/html/VoidCallback.idl b/Source/WebCore/html/VoidCallback.idl
index f1b0779e4..31a221510 100644
--- a/Source/WebCore/html/VoidCallback.idl
+++ b/Source/WebCore/html/VoidCallback.idl
@@ -23,10 +23,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Callback
- ] VoidCallback {
- boolean handleEvent();
- };
-}
+[
+ Callback
+] interface VoidCallback {
+ boolean handleEvent();
+};
diff --git a/Source/WebCore/html/WeekInputType.cpp b/Source/WebCore/html/WeekInputType.cpp
index adbb87591..b16ac2856 100644
--- a/Source/WebCore/html/WeekInputType.cpp
+++ b/Source/WebCore/html/WeekInputType.cpp
@@ -39,6 +39,12 @@
#if ENABLE(INPUT_TYPE_WEEK)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateTimeFieldsState.h"
+#include "LocalizedStrings.h"
+#include <wtf/text/WTFString.h>
+#endif
+
namespace WebCore {
using namespace HTMLNames;
@@ -91,6 +97,25 @@ bool WeekInputType::isWeekField() const
return true;
}
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+String WeekInputType::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
+{
+ if (!dateTimeFieldsState.hasYear() || !dateTimeFieldsState.hasWeekOfYear())
+ return emptyString();
+ return String::format("%04u-W%02u", dateTimeFieldsState.year(), dateTimeFieldsState.weekOfYear());
+}
+
+void WeekInputType::setupLayoutParameters(DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents&) const
+{
+ layoutParameters.dateTimeFormat = weekFormatInLDML();
+ layoutParameters.fallbackDateTimeFormat = "'Week' ww-yyyy";
+ layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
+ layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+ layoutParameters.placeholderForYear = "----";
+}
+#endif
+
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/WeekInputType.h b/Source/WebCore/html/WeekInputType.h
index cc58ab7d0..a88172009 100644
--- a/Source/WebCore/html/WeekInputType.h
+++ b/Source/WebCore/html/WeekInputType.h
@@ -31,24 +31,36 @@
#ifndef WeekInputType_h
#define WeekInputType_h
-#include "BaseDateAndTimeInputType.h"
+#include "BaseMultipleFieldsDateAndTimeInputType.h"
#if ENABLE(INPUT_TYPE_WEEK)
namespace WebCore {
-class WeekInputType : public BaseDateAndTimeInputType {
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+typedef BaseMultipleFieldsDateAndTimeInputType BaseWeekInputType;
+#else
+typedef BaseDateAndTimeInputType BaseWeekInputType;
+#endif
+
+class WeekInputType : public BaseWeekInputType {
public:
static PassOwnPtr<InputType> create(HTMLInputElement*);
private:
- WeekInputType(HTMLInputElement* element) : BaseDateAndTimeInputType(element) { }
+ WeekInputType(HTMLInputElement* element) : BaseWeekInputType(element) { }
virtual const AtomicString& formControlType() const OVERRIDE;
virtual DateComponents::Type dateType() const OVERRIDE;
virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE;
virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE;
virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE;
virtual bool isWeekField() const OVERRIDE;
+
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+ // BaseMultipleFieldsDateAndTimeInputType functions
+ virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
+ virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const OVERRIDE FINAL;
+#endif
};
} // namespace WebCore
diff --git a/Source/WebCore/html/canvas/ArrayBuffer.idl b/Source/WebCore/html/canvas/ArrayBuffer.idl
index 6e7663dba..b3f013be5 100644
--- a/Source/WebCore/html/canvas/ArrayBuffer.idl
+++ b/Source/WebCore/html/canvas/ArrayBuffer.idl
@@ -23,16 +23,13 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ JSGenerateIsReachable=Impl,
+ CustomConstructor,
+ ConstructorParameters=1,
+ JSNoStaticTables
+] interface ArrayBuffer {
+ readonly attribute unsigned long byteLength;
+ ArrayBuffer slice(in long begin, in [Optional] long end);
+};
- interface [
- JSGenerateIsReachable=Impl,
- CustomConstructor,
- ConstructorParameters=1,
- JSNoStaticTables
- ] ArrayBuffer {
- readonly attribute unsigned long byteLength;
- ArrayBuffer slice(in long begin, in [Optional] long end);
- };
-
-}
diff --git a/Source/WebCore/html/canvas/ArrayBufferView.idl b/Source/WebCore/html/canvas/ArrayBufferView.idl
index 0e934e6cb..1c18e186b 100644
--- a/Source/WebCore/html/canvas/ArrayBufferView.idl
+++ b/Source/WebCore/html/canvas/ArrayBufferView.idl
@@ -23,14 +23,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- CustomToJSObject,
- JSNoStaticTables,
- OmitConstructor
- ] ArrayBufferView {
- readonly attribute ArrayBuffer buffer;
- readonly attribute unsigned long byteOffset;
- readonly attribute unsigned long byteLength;
- };
-}
+[
+ CustomToJSObject,
+ JSNoStaticTables,
+ OmitConstructor
+] interface ArrayBufferView {
+ readonly attribute ArrayBuffer buffer;
+ readonly attribute unsigned long byteOffset;
+ readonly attribute unsigned long byteLength;
+};
diff --git a/Source/WebCore/html/canvas/CanvasGradient.idl b/Source/WebCore/html/canvas/CanvasGradient.idl
index 496d4c1b1..f35a68b40 100644
--- a/Source/WebCore/html/canvas/CanvasGradient.idl
+++ b/Source/WebCore/html/canvas/CanvasGradient.idl
@@ -23,15 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+interface CanvasGradient {
- interface CanvasGradient {
+ void addColorStop(in [Optional=DefaultIsUndefined] float offset,
+ in [Optional=DefaultIsUndefined] DOMString color)
+ raises (DOMException);
- void addColorStop(in [Optional=DefaultIsUndefined] float offset,
- in [Optional=DefaultIsUndefined] DOMString color)
- raises (DOMException);
-
- };
-
-}
+};
diff --git a/Source/WebCore/html/canvas/CanvasPattern.idl b/Source/WebCore/html/canvas/CanvasPattern.idl
index e5aa0360b..7bcab17ac 100644
--- a/Source/WebCore/html/canvas/CanvasPattern.idl
+++ b/Source/WebCore/html/canvas/CanvasPattern.idl
@@ -23,10 +23,6 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface CanvasPattern {
- };
-
-}
+interface CanvasPattern {
+};
diff --git a/Source/WebCore/html/canvas/CanvasRenderingContext.idl b/Source/WebCore/html/canvas/CanvasRenderingContext.idl
index ab5beb189..c48e68161 100644
--- a/Source/WebCore/html/canvas/CanvasRenderingContext.idl
+++ b/Source/WebCore/html/canvas/CanvasRenderingContext.idl
@@ -23,14 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ JSCustomMarkFunction,
+ JSGenerateIsReachable,
+ CustomToJSObject
+] interface CanvasRenderingContext {
+ readonly attribute HTMLCanvasElement canvas;
+};
- interface [
- JSCustomMarkFunction,
- JSGenerateIsReachable,
- CustomToJSObject
- ] CanvasRenderingContext {
- readonly attribute HTMLCanvasElement canvas;
- };
-
-}
diff --git a/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl b/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
index a8569487a..6bfc594db 100644
--- a/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
+++ b/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
@@ -23,221 +23,217 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface CanvasRenderingContext2D : CanvasRenderingContext {
-
- void save();
- void restore();
-
- void scale(in [Optional=DefaultIsUndefined] float sx,
- in [Optional=DefaultIsUndefined] float sy);
- void rotate(in [Optional=DefaultIsUndefined] float angle);
- void translate(in [Optional=DefaultIsUndefined] float tx,
- in [Optional=DefaultIsUndefined] float ty);
- void transform(in [Optional=DefaultIsUndefined] float m11,
- in [Optional=DefaultIsUndefined] float m12,
- in [Optional=DefaultIsUndefined] float m21,
- in [Optional=DefaultIsUndefined] float m22,
- in [Optional=DefaultIsUndefined] float dx,
- in [Optional=DefaultIsUndefined] float dy);
- void setTransform(in [Optional=DefaultIsUndefined] float m11,
- in [Optional=DefaultIsUndefined] float m12,
- in [Optional=DefaultIsUndefined] float m21,
- in [Optional=DefaultIsUndefined] float m22,
- in [Optional=DefaultIsUndefined] float dx,
- in [Optional=DefaultIsUndefined] float dy);
-
- attribute float globalAlpha;
- attribute [TreatNullAs=NullString] DOMString globalCompositeOperation;
-
- CanvasGradient createLinearGradient(in [Optional=DefaultIsUndefined] float x0,
- in [Optional=DefaultIsUndefined] float y0,
- in [Optional=DefaultIsUndefined] float x1,
- in [Optional=DefaultIsUndefined] float y1)
- raises (DOMException);
- CanvasGradient createRadialGradient(in [Optional=DefaultIsUndefined] float x0,
- in [Optional=DefaultIsUndefined] float y0,
- in [Optional=DefaultIsUndefined] float r0,
- in [Optional=DefaultIsUndefined] float x1,
- in [Optional=DefaultIsUndefined] float y1,
- in [Optional=DefaultIsUndefined] float r1)
- raises (DOMException);
-
- attribute float lineWidth;
- attribute [TreatNullAs=NullString] DOMString lineCap;
- attribute [TreatNullAs=NullString] DOMString lineJoin;
- attribute float miterLimit;
-
- attribute float shadowOffsetX;
- attribute float shadowOffsetY;
- attribute float shadowBlur;
- attribute [TreatNullAs=NullString] DOMString shadowColor;
-
- void setLineDash(in sequence<float> dash);
- sequence<float> getLineDash();
- attribute float lineDashOffset;
-
- // FIXME: These attributes should also be implemented for V8.
+interface CanvasRenderingContext2D : CanvasRenderingContext {
+
+ void save();
+ void restore();
+
+ void scale(in [Optional=DefaultIsUndefined] float sx,
+ in [Optional=DefaultIsUndefined] float sy);
+ void rotate(in [Optional=DefaultIsUndefined] float angle);
+ void translate(in [Optional=DefaultIsUndefined] float tx,
+ in [Optional=DefaultIsUndefined] float ty);
+ void transform(in [Optional=DefaultIsUndefined] float m11,
+ in [Optional=DefaultIsUndefined] float m12,
+ in [Optional=DefaultIsUndefined] float m21,
+ in [Optional=DefaultIsUndefined] float m22,
+ in [Optional=DefaultIsUndefined] float dx,
+ in [Optional=DefaultIsUndefined] float dy);
+ void setTransform(in [Optional=DefaultIsUndefined] float m11,
+ in [Optional=DefaultIsUndefined] float m12,
+ in [Optional=DefaultIsUndefined] float m21,
+ in [Optional=DefaultIsUndefined] float m22,
+ in [Optional=DefaultIsUndefined] float dx,
+ in [Optional=DefaultIsUndefined] float dy);
+
+ attribute float globalAlpha;
+ [TreatNullAs=NullString] attribute DOMString globalCompositeOperation;
+
+ CanvasGradient createLinearGradient(in [Optional=DefaultIsUndefined] float x0,
+ in [Optional=DefaultIsUndefined] float y0,
+ in [Optional=DefaultIsUndefined] float x1,
+ in [Optional=DefaultIsUndefined] float y1)
+ raises (DOMException);
+ CanvasGradient createRadialGradient(in [Optional=DefaultIsUndefined] float x0,
+ in [Optional=DefaultIsUndefined] float y0,
+ in [Optional=DefaultIsUndefined] float r0,
+ in [Optional=DefaultIsUndefined] float x1,
+ in [Optional=DefaultIsUndefined] float y1,
+ in [Optional=DefaultIsUndefined] float r1)
+ raises (DOMException);
+
+ attribute float lineWidth;
+ [TreatNullAs=NullString] attribute DOMString lineCap;
+ [TreatNullAs=NullString] attribute DOMString lineJoin;
+ attribute float miterLimit;
+
+ attribute float shadowOffsetX;
+ attribute float shadowOffsetY;
+ attribute float shadowBlur;
+ [TreatNullAs=NullString] attribute DOMString shadowColor;
+
+ void setLineDash(in sequence<float> dash);
+ sequence<float> getLineDash();
+ attribute float lineDashOffset;
+
+ // FIXME: These attributes should also be implemented for V8.
#if !(defined(V8_BINDING) && V8_BINDING)
- attribute [Custom] Array webkitLineDash;
- attribute float webkitLineDashOffset;
+ [Custom] attribute Array webkitLineDash;
+ attribute float webkitLineDashOffset;
#endif
- void clearRect(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y,
- in [Optional=DefaultIsUndefined] float width,
- in [Optional=DefaultIsUndefined] float height);
- void fillRect(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y,
- in [Optional=DefaultIsUndefined] float width,
- in [Optional=DefaultIsUndefined] float height);
-
- void beginPath();
- void closePath();
- void moveTo(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y);
- void lineTo(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y);
- void quadraticCurveTo(in [Optional=DefaultIsUndefined] float cpx,
- in [Optional=DefaultIsUndefined] float cpy,
- in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y);
- void bezierCurveTo(in [Optional=DefaultIsUndefined] float cp1x,
- in [Optional=DefaultIsUndefined] float cp1y,
- in [Optional=DefaultIsUndefined] float cp2x,
- in [Optional=DefaultIsUndefined] float cp2y,
- in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y);
- void arcTo(in [Optional=DefaultIsUndefined] float x1,
- in [Optional=DefaultIsUndefined] float y1,
- in [Optional=DefaultIsUndefined] float x2,
- in [Optional=DefaultIsUndefined] float y2,
- in [Optional=DefaultIsUndefined] float radius)
- raises (DOMException);
- void rect(in [Optional=DefaultIsUndefined] float x,
+ void clearRect(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y,
+ in [Optional=DefaultIsUndefined] float width,
+ in [Optional=DefaultIsUndefined] float height);
+ void fillRect(in [Optional=DefaultIsUndefined] float x,
in [Optional=DefaultIsUndefined] float y,
in [Optional=DefaultIsUndefined] float width,
in [Optional=DefaultIsUndefined] float height);
- void arc(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y,
- in [Optional=DefaultIsUndefined] float radius,
- in [Optional=DefaultIsUndefined] float startAngle,
- in [Optional=DefaultIsUndefined] float endAngle,
- in [Optional=DefaultIsUndefined] boolean anticlockwise)
- raises (DOMException);
- void fill();
- void stroke();
- void clip();
- boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y);
-
- // text
- attribute DOMString font;
- attribute DOMString textAlign;
- attribute DOMString textBaseline;
-
- TextMetrics measureText(in [Optional=DefaultIsUndefined] DOMString text);
-
- // other
-
- void setAlpha(in [Optional=DefaultIsUndefined] float alpha);
- void setCompositeOperation(in [Optional=DefaultIsUndefined] DOMString compositeOperation);
+
+ void beginPath();
+ void closePath();
+ void moveTo(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y);
+ void lineTo(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y);
+ void quadraticCurveTo(in [Optional=DefaultIsUndefined] float cpx,
+ in [Optional=DefaultIsUndefined] float cpy,
+ in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y);
+ void bezierCurveTo(in [Optional=DefaultIsUndefined] float cp1x,
+ in [Optional=DefaultIsUndefined] float cp1y,
+ in [Optional=DefaultIsUndefined] float cp2x,
+ in [Optional=DefaultIsUndefined] float cp2y,
+ in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y);
+ void arcTo(in [Optional=DefaultIsUndefined] float x1,
+ in [Optional=DefaultIsUndefined] float y1,
+ in [Optional=DefaultIsUndefined] float x2,
+ in [Optional=DefaultIsUndefined] float y2,
+ in [Optional=DefaultIsUndefined] float radius)
+ raises (DOMException);
+ void rect(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y,
+ in [Optional=DefaultIsUndefined] float width,
+ in [Optional=DefaultIsUndefined] float height);
+ void arc(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y,
+ in [Optional=DefaultIsUndefined] float radius,
+ in [Optional=DefaultIsUndefined] float startAngle,
+ in [Optional=DefaultIsUndefined] float endAngle,
+ in [Optional=DefaultIsUndefined] boolean anticlockwise)
+ raises (DOMException);
+ void fill();
+ void stroke();
+ void clip();
+ boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y);
+
+ // text
+ attribute DOMString font;
+ attribute DOMString textAlign;
+ attribute DOMString textBaseline;
+
+ TextMetrics measureText(in [Optional=DefaultIsUndefined] DOMString text);
+
+ // other
+
+ void setAlpha(in [Optional=DefaultIsUndefined] float alpha);
+ void setCompositeOperation(in [Optional=DefaultIsUndefined] DOMString compositeOperation);
#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
- void setLineWidth(in [Optional=DefaultIsUndefined] float width);
- void setLineCap(in [Optional=DefaultIsUndefined] DOMString cap);
- void setLineJoin(in [Optional=DefaultIsUndefined] DOMString join);
- void setMiterLimit(in [Optional=DefaultIsUndefined] float limit);
+ void setLineWidth(in [Optional=DefaultIsUndefined] float width);
+ void setLineCap(in [Optional=DefaultIsUndefined] DOMString cap);
+ void setLineJoin(in [Optional=DefaultIsUndefined] DOMString join);
+ void setMiterLimit(in [Optional=DefaultIsUndefined] float limit);
#endif
- void clearShadow();
-
- void fillText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
- void strokeText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
-
- void setStrokeColor(in DOMString color, in [Optional] float alpha);
- void setStrokeColor(in float grayLevel, in [Optional] float alpha);
- void setStrokeColor(in float r, in float g, in float b, in float a);
- void setStrokeColor(in float c, in float m, in float y, in float k, in float a);
-
- void setFillColor(in DOMString color, in [Optional] float alpha);
- void setFillColor(in float grayLevel, in [Optional] float alpha);
- void setFillColor(in float r, in float g, in float b, in float a);
- void setFillColor(in float c, in float m, in float y, in float k, in float a);
-
- void strokeRect(in [Optional=DefaultIsUndefined] float x,
- in [Optional=DefaultIsUndefined] float y,
- in [Optional=DefaultIsUndefined] float width,
- in [Optional=DefaultIsUndefined] float height,
- in [Optional] float lineWidth);
-
- void drawImage(in HTMLImageElement? image, in float x, in float y)
- raises (DOMException);
- void drawImage(in HTMLImageElement? image, in float x, in float y, in float width, in float height)
- raises (DOMException);
- void drawImage(in HTMLImageElement? image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
- raises (DOMException);
- void drawImage(in HTMLCanvasElement? canvas, in float x, in float y)
- raises (DOMException);
- void drawImage(in HTMLCanvasElement? canvas, in float x, in float y, in float width, in float height)
- raises (DOMException);
- void drawImage(in HTMLCanvasElement? canvas, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
- raises (DOMException);
+ void clearShadow();
+
+ void fillText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
+ void strokeText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
+
+ void setStrokeColor(in [StrictTypeChecking] DOMString color, in [Optional] float alpha);
+ void setStrokeColor(in float grayLevel, in [Optional] float alpha);
+ void setStrokeColor(in float r, in float g, in float b, in float a);
+ void setStrokeColor(in float c, in float m, in float y, in float k, in float a);
+
+ void setFillColor(in [StrictTypeChecking] DOMString color, in [Optional] float alpha);
+ void setFillColor(in float grayLevel, in [Optional] float alpha);
+ void setFillColor(in float r, in float g, in float b, in float a);
+ void setFillColor(in float c, in float m, in float y, in float k, in float a);
+
+ void strokeRect(in [Optional=DefaultIsUndefined] float x,
+ in [Optional=DefaultIsUndefined] float y,
+ in [Optional=DefaultIsUndefined] float width,
+ in [Optional=DefaultIsUndefined] float height,
+ in [Optional] float lineWidth);
+
+ void drawImage(in HTMLImageElement? image, in float x, in float y)
+ raises (DOMException);
+ void drawImage(in HTMLImageElement? image, in float x, in float y, in float width, in float height)
+ raises (DOMException);
+ void drawImage(in HTMLImageElement? image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+ raises (DOMException);
+ void drawImage(in HTMLCanvasElement? canvas, in float x, in float y)
+ raises (DOMException);
+ void drawImage(in HTMLCanvasElement? canvas, in float x, in float y, in float width, in float height)
+ raises (DOMException);
+ void drawImage(in HTMLCanvasElement? canvas, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+ raises (DOMException);
#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
- void drawImage(in HTMLVideoElement? video, in float x, in float y)
- raises (DOMException);
- void drawImage(in HTMLVideoElement? video, in float x, in float y, in float width, in float height)
- raises (DOMException);
- void drawImage(in HTMLVideoElement? video, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
- raises (DOMException);
+ void drawImage(in HTMLVideoElement? video, in float x, in float y)
+ raises (DOMException);
+ void drawImage(in HTMLVideoElement? video, in float x, in float y, in float width, in float height)
+ raises (DOMException);
+ void drawImage(in HTMLVideoElement? video, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+ raises (DOMException);
#endif
- void drawImageFromRect(in HTMLImageElement image,
- in [Optional] float sx, in [Optional] float sy, in [Optional] float sw, in [Optional] float sh,
- in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
- in [Optional] DOMString compositeOperation);
-
- void setShadow(in float width, in float height, in float blur, in [Optional] DOMString color, in [Optional] float alpha);
- void setShadow(in float width, in float height, in float blur, in float grayLevel, in [Optional] float alpha);
- void setShadow(in float width, in float height, in float blur, in float r, in float g, in float b, in float a);
- void setShadow(in float width, in float height, in float blur, in float c, in float m, in float y, in float k, in float a);
-
- void putImageData(in ImageData? imagedata, in float dx, in float dy)
- raises(DOMException);
- void putImageData(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
- raises(DOMException);
-
- void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy)
- raises(DOMException);
- void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
- raises(DOMException);
-
- CanvasPattern createPattern(in HTMLCanvasElement? canvas, in [TreatNullAs=NullString] DOMString repetitionType)
- raises (DOMException);
- CanvasPattern createPattern(in HTMLImageElement? image, in [TreatNullAs=NullString] DOMString repetitionType)
- raises (DOMException);
- ImageData createImageData(in ImageData? imagedata)
- raises (DOMException);
- ImageData createImageData(in float sw, in float sh)
- raises (DOMException);
-
- attribute [Custom] custom strokeStyle;
- attribute [Custom] custom fillStyle;
-
- // pixel manipulation
- ImageData getImageData(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
- in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
- raises(DOMException);
-
- ImageData webkitGetImageDataHD(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
- in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
- raises(DOMException);
-
- readonly attribute float webkitBackingStorePixelRatio;
-
- attribute boolean webkitImageSmoothingEnabled;
- };
-
-}
+ void drawImageFromRect(in HTMLImageElement image,
+ in [Optional] float sx, in [Optional] float sy, in [Optional] float sw, in [Optional] float sh,
+ in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
+ in [Optional] DOMString compositeOperation);
+
+ void setShadow(in float width, in float height, in float blur, in [Optional, StrictTypeChecking] DOMString color, in [Optional] float alpha);
+ void setShadow(in float width, in float height, in float blur, in float grayLevel, in [Optional] float alpha);
+ void setShadow(in float width, in float height, in float blur, in float r, in float g, in float b, in float a);
+ void setShadow(in float width, in float height, in float blur, in float c, in float m, in float y, in float k, in float a);
+
+ void putImageData(in ImageData? imagedata, in float dx, in float dy)
+ raises(DOMException);
+ void putImageData(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
+ raises(DOMException);
+
+ void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy)
+ raises(DOMException);
+ void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
+ raises(DOMException);
+
+ CanvasPattern createPattern(in HTMLCanvasElement? canvas, in [TreatNullAs=NullString] DOMString repetitionType)
+ raises (DOMException);
+ CanvasPattern createPattern(in HTMLImageElement? image, in [TreatNullAs=NullString] DOMString repetitionType)
+ raises (DOMException);
+ ImageData createImageData(in ImageData? imagedata)
+ raises (DOMException);
+ ImageData createImageData(in float sw, in float sh)
+ raises (DOMException);
+
+ [Custom] attribute custom strokeStyle;
+ [Custom] attribute custom fillStyle;
+
+ // pixel manipulation
+ ImageData getImageData(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
+ in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
+ raises(DOMException);
+
+ ImageData webkitGetImageDataHD(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
+ in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
+ raises(DOMException);
+
+ readonly attribute float webkitBackingStorePixelRatio;
+
+ attribute boolean webkitImageSmoothingEnabled;
+};
diff --git a/Source/WebCore/html/canvas/DataView.idl b/Source/WebCore/html/canvas/DataView.idl
index 3f4dcdf4d..e4ad072ab 100755
--- a/Source/WebCore/html/canvas/DataView.idl
+++ b/Source/WebCore/html/canvas/DataView.idl
@@ -23,59 +23,56 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ CustomConstructor,
+ ConstructorParameters=3,
+ CustomToJSObject,
+ JSNoStaticTables
+] interface DataView : ArrayBufferView {
+ // All these methods raise an exception if they would read or write beyond the end of the view.
- interface [
- CustomConstructor,
- ConstructorParameters=3,
- CustomToJSObject,
- JSNoStaticTables
- ] DataView : ArrayBufferView {
- // All these methods raise an exception if they would read or write beyond the end of the view.
+ // We have to use custom code because our code generator does not support int8_t type.
+ // int8_t getInt8(in unsigned long byteOffset);
+ // uint8_t getUint8(in unsigned long byteOffset);
+ [Custom] DOMObject getInt8()
+ raises (DOMException);
+ [Custom] DOMObject getUint8()
+ raises (DOMException);
- // We have to use custom code because our code generator does not support int8_t type.
- // int8_t getInt8(in unsigned long byteOffset);
- // uint8_t getUint8(in unsigned long byteOffset);
- [Custom] DOMObject getInt8()
- raises (DOMException);
- [Custom] DOMObject getUint8()
- raises (DOMException);
+ [StrictTypeChecking] short getInt16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] unsigned short getUint16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] long getInt32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] unsigned long getUint32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
- [StrictTypeChecking] short getInt16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] unsigned short getUint16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] long getInt32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] unsigned long getUint32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
+ // Use custom code to handle NaN case for JSC.
+ [JSCustom, StrictTypeChecking] float getFloat32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [JSCustom, StrictTypeChecking] double getFloat64(in unsigned long byteOffset, in [Optional] boolean littleEndian)
+ raises (DOMException);
- // Use custom code to handle NaN case for JSC.
- [JSCustom, StrictTypeChecking] float getFloat32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
- [JSCustom, StrictTypeChecking] double getFloat64(in unsigned long byteOffset, in [Optional] boolean littleEndian)
- raises (DOMException);
+ // We have to use custom code because our code generator does not support uint8_t type.
+ // void setInt8(in unsigned long byteOffset, in int8_t value);
+ // void setUint8(in unsigned long byteOffset, in uint8_t value);
+ [Custom] void setInt8()
+ raises (DOMException);
+ [Custom] void setUint8()
+ raises (DOMException);
- // We have to use custom code because our code generator does not support uint8_t type.
- // void setInt8(in unsigned long byteOffset, in int8_t value);
- // void setUint8(in unsigned long byteOffset, in uint8_t value);
- [Custom] void setInt8()
- raises (DOMException);
- [Custom] void setUint8()
- raises (DOMException);
+ [StrictTypeChecking] void setInt16(in unsigned long byteOffset, in short value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] void setUint16(in unsigned long byteOffset, in unsigned short value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] void setInt32(in unsigned long byteOffset, in long value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] void setUint32(in unsigned long byteOffset, in unsigned long value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] void setFloat32(in unsigned long byteOffset, in float value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+ [StrictTypeChecking] void setFloat64(in unsigned long byteOffset, in double value, in [Optional] boolean littleEndian)
+ raises (DOMException);
+};
- [StrictTypeChecking] void setInt16(in unsigned long byteOffset, in short value, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] void setUint16(in unsigned long byteOffset, in unsigned short value, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] void setInt32(in unsigned long byteOffset, in long value, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] void setUint32(in unsigned long byteOffset, in unsigned long value, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] void setFloat32(in unsigned long byteOffset, in float value, in [Optional] boolean littleEndian)
- raises (DOMException);
- [StrictTypeChecking] void setFloat64(in unsigned long byteOffset, in double value, in [Optional] boolean littleEndian)
- raises (DOMException);
- };
-
-}
diff --git a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl
index 568aa9a3d..07668e737 100644
--- a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl
+++ b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl
@@ -23,14 +23,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] EXTTextureFilterAnisotropic {
- const unsigned int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
- const unsigned int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface EXTTextureFilterAnisotropic {
+ const unsigned int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
+ const unsigned int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
+};
diff --git a/Source/WebCore/html/canvas/Float32Array.idl b/Source/WebCore/html/canvas/Float32Array.idl
index b445eb40d..e37f42d43 100644
--- a/Source/WebCore/html/canvas/Float32Array.idl
+++ b/Source/WebCore/html/canvas/Float32Array.idl
@@ -24,26 +24,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=float
- ] Float32Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 4;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=float
+] interface Float32Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 4;
- readonly attribute unsigned long length;
- Float32Array subarray(in [Optional=DefaultIsUndefined] long start,
- in [Optional] long end);
+ readonly attribute unsigned long length;
+ Float32Array subarray(in [Optional=DefaultIsUndefined] long start,
+ in [Optional] long end);
- // void set(in Float32Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Float32Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Float64Array.idl b/Source/WebCore/html/canvas/Float64Array.idl
index da4b483a1..0b938b53b 100644
--- a/Source/WebCore/html/canvas/Float64Array.idl
+++ b/Source/WebCore/html/canvas/Float64Array.idl
@@ -24,26 +24,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=double
- ] Float64Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 8;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=double
+] interface Float64Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 8;
- readonly attribute unsigned long length;
- Float64Array subarray(in [Optional=DefaultIsUndefined] long start,
- in [Optional] long end);
+ readonly attribute unsigned long length;
+ Float64Array subarray(in [Optional=DefaultIsUndefined] long start,
+ in [Optional] long end);
- // void set(in Float64Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Float64Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Int16Array.idl b/Source/WebCore/html/canvas/Int16Array.idl
index 9f98bea93..07789d37d 100644
--- a/Source/WebCore/html/canvas/Int16Array.idl
+++ b/Source/WebCore/html/canvas/Int16Array.idl
@@ -23,26 +23,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=short
- ] Int16Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 2;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=short
+] interface Int16Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 2;
- readonly attribute unsigned long length;
- Int16Array subarray(in [Optional=DefaultIsUndefined] long start,
- in [Optional] long end);
+ readonly attribute unsigned long length;
+ Int16Array subarray(in [Optional=DefaultIsUndefined] long start,
+ in [Optional] long end);
- // void set(in Int16Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Int16Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Int32Array.idl b/Source/WebCore/html/canvas/Int32Array.idl
index 87cd7587c..6ef836aa3 100644
--- a/Source/WebCore/html/canvas/Int32Array.idl
+++ b/Source/WebCore/html/canvas/Int32Array.idl
@@ -24,26 +24,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=int
- ] Int32Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 4;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=int
+] interface Int32Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 4;
- readonly attribute unsigned long length;
- Int32Array subarray(in [Optional=DefaultIsUndefined] long start,
- in [Optional] long end);
+ readonly attribute unsigned long length;
+ Int32Array subarray(in [Optional=DefaultIsUndefined] long start,
+ in [Optional] long end);
- // void set(in Int32Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Int32Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Int8Array.idl b/Source/WebCore/html/canvas/Int8Array.idl
index 10cf12003..8b38ca3b8 100644
--- a/Source/WebCore/html/canvas/Int8Array.idl
+++ b/Source/WebCore/html/canvas/Int8Array.idl
@@ -24,26 +24,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=signed char
- ] Int8Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 1;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=signed char
+] interface Int8Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 1;
- readonly attribute unsigned long length;
- Int8Array subarray(in [Optional=DefaultIsUndefined] long start,
- in [Optional] long end);
+ readonly attribute unsigned long length;
+ Int8Array subarray(in [Optional=DefaultIsUndefined] long start,
+ in [Optional] long end);
- // void set(in Int8Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Int8Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/OESStandardDerivatives.idl b/Source/WebCore/html/canvas/OESStandardDerivatives.idl
index 93f0a01d8..c4eb48da4 100644
--- a/Source/WebCore/html/canvas/OESStandardDerivatives.idl
+++ b/Source/WebCore/html/canvas/OESStandardDerivatives.idl
@@ -23,13 +23,11 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] OESStandardDerivatives {
- const unsigned int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface OESStandardDerivatives {
+ const unsigned int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
+};
diff --git a/Source/WebCore/html/canvas/OESTextureFloat.idl b/Source/WebCore/html/canvas/OESTextureFloat.idl
index 6537f4707..2d1b3c5f7 100644
--- a/Source/WebCore/html/canvas/OESTextureFloat.idl
+++ b/Source/WebCore/html/canvas/OESTextureFloat.idl
@@ -23,11 +23,9 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor
- ] OESTextureFloat {
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor
+] interface OESTextureFloat {
+};
diff --git a/Source/WebCore/html/canvas/OESVertexArrayObject.idl b/Source/WebCore/html/canvas/OESVertexArrayObject.idl
index c3d366676..f2339067d 100644
--- a/Source/WebCore/html/canvas/OESVertexArrayObject.idl
+++ b/Source/WebCore/html/canvas/OESVertexArrayObject.idl
@@ -23,18 +23,16 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] OESVertexArrayObject {
- const unsigned int VERTEX_ARRAY_BINDING_OES = 0x85B5;
-
- [StrictTypeChecking] WebGLVertexArrayObjectOES createVertexArrayOES();
- [StrictTypeChecking] void deleteVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
- [StrictTypeChecking] boolean isVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
- [StrictTypeChecking] void bindVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject) raises(DOMException);
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface OESVertexArrayObject {
+ const unsigned int VERTEX_ARRAY_BINDING_OES = 0x85B5;
+
+ [StrictTypeChecking] WebGLVertexArrayObjectOES createVertexArrayOES();
+ [StrictTypeChecking] void deleteVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
+ [StrictTypeChecking] boolean isVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
+ [StrictTypeChecking] void bindVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject) raises(DOMException);
+};
diff --git a/Source/WebCore/html/canvas/Uint16Array.idl b/Source/WebCore/html/canvas/Uint16Array.idl
index 72998a35d..4e0802258 100644
--- a/Source/WebCore/html/canvas/Uint16Array.idl
+++ b/Source/WebCore/html/canvas/Uint16Array.idl
@@ -24,25 +24,23 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=unsigned short
- ] Uint16Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 2;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=unsigned short
+] interface Uint16Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 2;
- readonly attribute unsigned long length;
- Uint16Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+ readonly attribute unsigned long length;
+ Uint16Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
- // void set(in Uint16Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Uint16Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Uint32Array.idl b/Source/WebCore/html/canvas/Uint32Array.idl
index 65c44bef9..8d34293f9 100644
--- a/Source/WebCore/html/canvas/Uint32Array.idl
+++ b/Source/WebCore/html/canvas/Uint32Array.idl
@@ -24,25 +24,23 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=unsigned int
- ] Uint32Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 4;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=unsigned int
+] interface Uint32Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 4;
- readonly attribute unsigned long length;
- Uint32Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+ readonly attribute unsigned long length;
+ Uint32Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
- // void set(in Uint32Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Uint32Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Uint8Array.idl b/Source/WebCore/html/canvas/Uint8Array.idl
index f6ef9377d..65d2312cf 100644
--- a/Source/WebCore/html/canvas/Uint8Array.idl
+++ b/Source/WebCore/html/canvas/Uint8Array.idl
@@ -24,25 +24,23 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=unsigned char
- ] Uint8Array : ArrayBufferView {
- const unsigned long BYTES_PER_ELEMENT = 1;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=unsigned char
+] interface Uint8Array : ArrayBufferView {
+ const unsigned long BYTES_PER_ELEMENT = 1;
- readonly attribute unsigned long length;
- Uint8Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+ readonly attribute unsigned long length;
+ Uint8Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
- // void set(in Uint8Array array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // void set(in Uint8Array array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/Uint8ClampedArray.idl b/Source/WebCore/html/canvas/Uint8ClampedArray.idl
index c646e57e9..efcc98a38 100644
--- a/Source/WebCore/html/canvas/Uint8ClampedArray.idl
+++ b/Source/WebCore/html/canvas/Uint8ClampedArray.idl
@@ -24,26 +24,24 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- ConstructorTemplate=TypedArray,
- ConstructorParameters=1,
- NumericIndexedGetter,
- CustomIndexedSetter,
- JSGenerateToNativeObject,
- JSNoStaticTables,
- CustomToJSObject,
- DoNotCheckConstants,
- TypedArray=unsigned char
- ] Uint8ClampedArray : Uint8Array {
- const unsigned long BYTES_PER_ELEMENT = 1;
+[
+ ConstructorTemplate=TypedArray,
+ ConstructorParameters=1,
+ NumericIndexedGetter,
+ CustomIndexedSetter,
+ JSGenerateToNativeObject,
+ JSNoStaticTables,
+ CustomToJSObject,
+ DoNotCheckConstants,
+ TypedArray=unsigned char
+] interface Uint8ClampedArray : Uint8Array {
+ const unsigned long BYTES_PER_ELEMENT = 1;
- readonly attribute unsigned long length;
- Uint8ClampedArray subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+ readonly attribute unsigned long length;
+ Uint8ClampedArray subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
- // FIXME: Missing other setters!
- // void set(in Uint8ClampedArray array, [Optional] in unsigned long offset);
- // void set(in sequence<long> array, [Optional] in unsigned long offset);
- void set();
- };
-}
+ // FIXME: Missing other setters!
+ // void set(in Uint8ClampedArray array, [Optional] in unsigned long offset);
+ // void set(in sequence<long> array, [Optional] in unsigned long offset);
+ void set();
+};
diff --git a/Source/WebCore/html/canvas/WebGLActiveInfo.idl b/Source/WebCore/html/canvas/WebGLActiveInfo.idl
index e9fef93b3..47789bd50 100644
--- a/Source/WebCore/html/canvas/WebGLActiveInfo.idl
+++ b/Source/WebCore/html/canvas/WebGLActiveInfo.idl
@@ -23,14 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=WEBGL,
+] interface WebGLActiveInfo {
+ readonly attribute long size;
+ readonly attribute unsigned long type;
+ readonly attribute DOMString name;
+};
- interface [
- Conditional=WEBGL,
- ] WebGLActiveInfo {
- readonly attribute long size;
- readonly attribute unsigned long type;
- readonly attribute DOMString name;
- };
-
-}
diff --git a/Source/WebCore/html/canvas/WebGLBuffer.idl b/Source/WebCore/html/canvas/WebGLBuffer.idl
index 312b00911..f43cd6353 100644
--- a/Source/WebCore/html/canvas/WebGLBuffer.idl
+++ b/Source/WebCore/html/canvas/WebGLBuffer.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- ] WebGLBuffer {
- };
-}
+[
+ Conditional=WEBGL,
+] interface WebGLBuffer {
+};
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl
index 7fde5bba9..6642d28a5 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl
@@ -23,17 +23,15 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] WebGLCompressedTextureS3TC {
- /* Compressed Texture Formats */
- const unsigned int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2;
- const unsigned int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface WebGLCompressedTextureS3TC {
+ /* Compressed Texture Formats */
+ const unsigned int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
+ const unsigned int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
+ const unsigned int COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2;
+ const unsigned int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
+};
diff --git a/Source/WebCore/html/canvas/WebGLContextAttributes.idl b/Source/WebCore/html/canvas/WebGLContextAttributes.idl
index 56da1c61e..52dd041d8 100644
--- a/Source/WebCore/html/canvas/WebGLContextAttributes.idl
+++ b/Source/WebCore/html/canvas/WebGLContextAttributes.idl
@@ -24,16 +24,14 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- OmitConstructor
- ] WebGLContextAttributes {
- attribute boolean alpha;
- attribute boolean depth;
- attribute boolean stencil;
- attribute boolean antialias;
- attribute boolean premultipliedAlpha;
- attribute boolean preserveDrawingBuffer;
- };
-}
+[
+ Conditional=WEBGL,
+ OmitConstructor
+] interface WebGLContextAttributes {
+ attribute boolean alpha;
+ attribute boolean depth;
+ attribute boolean stencil;
+ attribute boolean antialias;
+ attribute boolean premultipliedAlpha;
+ attribute boolean preserveDrawingBuffer;
+};
diff --git a/Source/WebCore/html/canvas/WebGLContextEvent.idl b/Source/WebCore/html/canvas/WebGLContextEvent.idl
index 3735f1245..c3eba1029 100644
--- a/Source/WebCore/html/canvas/WebGLContextEvent.idl
+++ b/Source/WebCore/html/canvas/WebGLContextEvent.idl
@@ -23,13 +23,10 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=WEBGL,
+ ConstructorTemplate=Event
+] interface WebGLContextEvent : Event {
+ [InitializedByEventConstructor] readonly attribute DOMString statusMessage;
+};
- interface [
- Conditional=WEBGL,
- ConstructorTemplate=Event
- ] WebGLContextEvent : Event {
- readonly attribute [InitializedByEventConstructor] DOMString statusMessage;
- };
-
-}
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl
index b307a1498..c7ae7f80d 100644
--- a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl
+++ b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl
@@ -23,14 +23,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] WebGLDebugRendererInfo {
- const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
- const unsigned int UNMASKED_RENDERER_WEBGL = 0x9246;
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface WebGLDebugRendererInfo {
+ const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
+ const unsigned int UNMASKED_RENDERER_WEBGL = 0x9246;
+};
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.idl b/Source/WebCore/html/canvas/WebGLDebugShaders.idl
index ee330b6ae..ed52d4d5b 100644
--- a/Source/WebCore/html/canvas/WebGLDebugShaders.idl
+++ b/Source/WebCore/html/canvas/WebGLDebugShaders.idl
@@ -23,12 +23,10 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor
- ] WebGLDebugShaders {
- [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getTranslatedShaderSource(in WebGLShader shader) raises(DOMException);
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor
+] interface WebGLDebugShaders {
+ [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getTranslatedShaderSource(in WebGLShader shader) raises(DOMException);
+};
diff --git a/Source/WebCore/html/canvas/WebGLDepthTexture.idl b/Source/WebCore/html/canvas/WebGLDepthTexture.idl
index 56ef537c0..45069ac4e 100644
--- a/Source/WebCore/html/canvas/WebGLDepthTexture.idl
+++ b/Source/WebCore/html/canvas/WebGLDepthTexture.idl
@@ -23,13 +23,11 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor,
- DoNotCheckConstants
- ] WebGLDepthTexture {
- const unsigned int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor,
+ DoNotCheckConstants
+] interface WebGLDepthTexture {
+ const unsigned int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
+};
diff --git a/Source/WebCore/html/canvas/WebGLFramebuffer.cpp b/Source/WebCore/html/canvas/WebGLFramebuffer.cpp
index b91ae506e..d081e2490 100644
--- a/Source/WebCore/html/canvas/WebGLFramebuffer.cpp
+++ b/Source/WebCore/html/canvas/WebGLFramebuffer.cpp
@@ -327,7 +327,7 @@ WebGLSharedObject* WebGLFramebuffer::getAttachmentObject(GC3Denum attachment) co
WebGLFramebuffer::WebGLAttachment* WebGLFramebuffer::getAttachment(GC3Denum attachment) const
{
const AttachmentMap::const_iterator it = m_attachments.find(attachment);
- return (it != m_attachments.end()) ? it->second.get() : 0;
+ return (it != m_attachments.end()) ? it->value.get() : 0;
}
void WebGLFramebuffer::removeAttachmentFromBoundFramebuffer(GC3Denum attachment)
@@ -367,9 +367,9 @@ void WebGLFramebuffer::removeAttachmentFromBoundFramebuffer(WebGLSharedObject* a
while (checkMore) {
checkMore = false;
for (AttachmentMap::iterator it = m_attachments.begin(); it != m_attachments.end(); ++it) {
- WebGLAttachment* attachmentObject = it->second.get();
+ WebGLAttachment* attachmentObject = it->value.get();
if (attachmentObject->isSharedObject(attachment)) {
- GC3Denum attachmentType = it->first;
+ GC3Denum attachmentType = it->key;
attachmentObject->unattach(context()->graphicsContext3D(), attachmentType);
removeAttachmentFromBoundFramebuffer(attachmentType);
checkMore = true;
@@ -419,8 +419,8 @@ GC3Denum WebGLFramebuffer::checkStatus(const char** reason) const
bool haveStencil = false;
bool haveDepthStencil = false;
for (AttachmentMap::const_iterator it = m_attachments.begin(); it != m_attachments.end(); ++it) {
- WebGLAttachment* attachment = it->second.get();
- if (!isAttachmentComplete(attachment, it->first, reason))
+ WebGLAttachment* attachment = it->value.get();
+ if (!isAttachmentComplete(attachment, it->key, reason))
return GraphicsContext3D::FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
if (!attachment->isValid()) {
*reason = "attachment is not valid";
@@ -430,7 +430,7 @@ GC3Denum WebGLFramebuffer::checkStatus(const char** reason) const
*reason = "attachment is an unsupported format";
return GraphicsContext3D::FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
}
- switch (it->first) {
+ switch (it->key) {
case GraphicsContext3D::DEPTH_ATTACHMENT:
haveDepth = true;
break;
@@ -488,7 +488,7 @@ bool WebGLFramebuffer::hasStencilBuffer() const
void WebGLFramebuffer::deleteObjectImpl(GraphicsContext3D* context3d, Platform3DObject object)
{
for (AttachmentMap::iterator it = m_attachments.begin(); it != m_attachments.end(); ++it)
- it->second->onDetached(context3d);
+ it->value->onDetached(context3d);
context3d->deleteFramebuffer(object);
}
@@ -499,8 +499,8 @@ bool WebGLFramebuffer::initializeAttachments(GraphicsContext3D* g3d, const char*
GC3Dbitfield mask = 0;
for (AttachmentMap::iterator it = m_attachments.begin(); it != m_attachments.end(); ++it) {
- GC3Denum attachmentType = it->first;
- WebGLAttachment* attachment = it->second.get();
+ GC3Denum attachmentType = it->key;
+ WebGLAttachment* attachment = it->value.get();
if (!attachment->isInitialized())
mask |= GraphicsContext3D::getClearBitsByAttachmentType(attachmentType);
}
@@ -571,8 +571,8 @@ bool WebGLFramebuffer::initializeAttachments(GraphicsContext3D* g3d, const char*
g3d->disable(GraphicsContext3D::DITHER);
for (AttachmentMap::iterator it = m_attachments.begin(); it != m_attachments.end(); ++it) {
- GC3Denum attachmentType = it->first;
- WebGLAttachment* attachment = it->second.get();
+ GC3Denum attachmentType = it->key;
+ WebGLAttachment* attachment = it->value.get();
GC3Dbitfield bits = GraphicsContext3D::getClearBitsByAttachmentType(attachmentType);
if (bits & mask)
attachment->setInitialized();
diff --git a/Source/WebCore/html/canvas/WebGLFramebuffer.idl b/Source/WebCore/html/canvas/WebGLFramebuffer.idl
index d0caa917f..e609513b2 100644
--- a/Source/WebCore/html/canvas/WebGLFramebuffer.idl
+++ b/Source/WebCore/html/canvas/WebGLFramebuffer.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLFramebuffer {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLFramebuffer {
+};
diff --git a/Source/WebCore/html/canvas/WebGLLoseContext.idl b/Source/WebCore/html/canvas/WebGLLoseContext.idl
index 390da2638..fcdd907c0 100644
--- a/Source/WebCore/html/canvas/WebGLLoseContext.idl
+++ b/Source/WebCore/html/canvas/WebGLLoseContext.idl
@@ -23,13 +23,11 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL,
- JSGenerateIsReachable=ImplContext,
- OmitConstructor
- ] WebGLLoseContext {
- [StrictTypeChecking] void loseContext();
- [StrictTypeChecking] void restoreContext();
- };
-}
+[
+ Conditional=WEBGL,
+ JSGenerateIsReachable=ImplContext,
+ OmitConstructor
+] interface WebGLLoseContext {
+ [StrictTypeChecking] void loseContext();
+ [StrictTypeChecking] void restoreContext();
+};
diff --git a/Source/WebCore/html/canvas/WebGLProgram.idl b/Source/WebCore/html/canvas/WebGLProgram.idl
index 326f1c376..d404ebdb8 100644
--- a/Source/WebCore/html/canvas/WebGLProgram.idl
+++ b/Source/WebCore/html/canvas/WebGLProgram.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLProgram {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLProgram {
+};
diff --git a/Source/WebCore/html/canvas/WebGLRenderbuffer.idl b/Source/WebCore/html/canvas/WebGLRenderbuffer.idl
index a6518ea2e..618f9c472 100644
--- a/Source/WebCore/html/canvas/WebGLRenderbuffer.idl
+++ b/Source/WebCore/html/canvas/WebGLRenderbuffer.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLRenderbuffer {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLRenderbuffer {
+};
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContext.cpp b/Source/WebCore/html/canvas/WebGLRenderingContext.cpp
index 582ed5d39..749d51914 100644
--- a/Source/WebCore/html/canvas/WebGLRenderingContext.cpp
+++ b/Source/WebCore/html/canvas/WebGLRenderingContext.cpp
@@ -1911,12 +1911,12 @@ void WebGLRenderingContext::drawArrays(GC3Denum mode, GC3Dint first, GC3Dsizei c
if (!isGLES2Compliant())
vertexAttrib0Simulated = simulateVertexAttrib0(first + count - 1);
if (!isGLES2NPOTStrict())
- handleNPOTTextures(true);
+ handleNPOTTextures("drawArrays", true);
m_context->drawArrays(mode, first, count);
if (!isGLES2Compliant() && vertexAttrib0Simulated)
restoreStatesAfterVertexAttrib0Simulation();
if (!isGLES2NPOTStrict())
- handleNPOTTextures(false);
+ handleNPOTTextures("drawArrays", false);
cleanupAfterGraphicsCall(true);
}
@@ -1990,12 +1990,12 @@ void WebGLRenderingContext::drawElements(GC3Denum mode, GC3Dsizei count, GC3Denu
vertexAttrib0Simulated = simulateVertexAttrib0(numElements);
}
if (!isGLES2NPOTStrict())
- handleNPOTTextures(true);
+ handleNPOTTextures("drawElements", true);
m_context->drawElements(mode, count, type, static_cast<GC3Dintptr>(offset));
if (!isGLES2Compliant() && vertexAttrib0Simulated)
restoreStatesAfterVertexAttrib0Simulation();
if (!isGLES2NPOTStrict())
- handleNPOTTextures(false);
+ handleNPOTTextures("drawElements", false);
cleanupAfterGraphicsCall(true);
}
@@ -4570,7 +4570,7 @@ WebGLGetInfo WebGLRenderingContext::getWebGLIntArrayParameter(GC3Denum pname)
return WebGLGetInfo(Int32Array::create(value, length));
}
-void WebGLRenderingContext::handleNPOTTextures(bool prepareToDraw)
+void WebGLRenderingContext::handleNPOTTextures(const char* functionName, bool prepareToDraw)
{
bool resetActiveUnit = false;
for (unsigned ii = 0; ii < m_textureUnits.size(); ++ii) {
@@ -4586,6 +4586,9 @@ void WebGLRenderingContext::handleNPOTTextures(bool prepareToDraw)
WebGLTexture* tex2D;
WebGLTexture* texCubeMap;
if (prepareToDraw) {
+ String msg(String("texture bound to texture unit ") + String::number(ii)
+ + " is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'");
+ printGLWarningToConsole(functionName, msg.utf8().data());
tex2D = m_blackTexture2D.get();
texCubeMap = m_blackTextureCubeMap.get();
} else {
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContext.h b/Source/WebCore/html/canvas/WebGLRenderingContext.h
index 45df6a582..26fc66c5b 100644
--- a/Source/WebCore/html/canvas/WebGLRenderingContext.h
+++ b/Source/WebCore/html/canvas/WebGLRenderingContext.h
@@ -541,7 +541,7 @@ public:
GC3Denum format, GC3Denum type,
Image* image, bool flipY, bool premultiplyAlpha, ExceptionCode&);
- void handleNPOTTextures(bool prepareToDraw);
+ void handleNPOTTextures(const char*, bool);
void createFallbackBlackTextures1x1();
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContext.idl b/Source/WebCore/html/canvas/WebGLRenderingContext.idl
index 9bf6ff544..31fa54c3d 100644
--- a/Source/WebCore/html/canvas/WebGLRenderingContext.idl
+++ b/Source/WebCore/html/canvas/WebGLRenderingContext.idl
@@ -23,647 +23,643 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface [
- Conditional=WEBGL,
- JSCustomMarkFunction,
- DoNotCheckConstants
- ] WebGLRenderingContext : CanvasRenderingContext {
-
- /* ClearBufferMask */
- const unsigned int DEPTH_BUFFER_BIT = 0x00000100;
- const unsigned int STENCIL_BUFFER_BIT = 0x00000400;
- const unsigned int COLOR_BUFFER_BIT = 0x00004000;
-
- /* BeginMode */
- const unsigned int POINTS = 0x0000;
- const unsigned int LINES = 0x0001;
- const unsigned int LINE_LOOP = 0x0002;
- const unsigned int LINE_STRIP = 0x0003;
- const unsigned int TRIANGLES = 0x0004;
- const unsigned int TRIANGLE_STRIP = 0x0005;
- const unsigned int TRIANGLE_FAN = 0x0006;
-
- /* AlphaFunction (not supported in ES20) */
- /* NEVER */
- /* LESS */
- /* EQUAL */
- /* LEQUAL */
- /* GREATER */
- /* NOTEQUAL */
- /* GEQUAL */
- /* ALWAYS */
-
- /* BlendingFactorDest */
- const unsigned int ZERO = 0;
- const unsigned int ONE = 1;
- const unsigned int SRC_COLOR = 0x0300;
- const unsigned int ONE_MINUS_SRC_COLOR = 0x0301;
- const unsigned int SRC_ALPHA = 0x0302;
- const unsigned int ONE_MINUS_SRC_ALPHA = 0x0303;
- const unsigned int DST_ALPHA = 0x0304;
- const unsigned int ONE_MINUS_DST_ALPHA = 0x0305;
-
- /* BlendingFactorSrc */
- /* ZERO */
- /* ONE */
- const unsigned int DST_COLOR = 0x0306;
- const unsigned int ONE_MINUS_DST_COLOR = 0x0307;
- const unsigned int SRC_ALPHA_SATURATE = 0x0308;
- /* SRC_ALPHA */
- /* ONE_MINUS_SRC_ALPHA */
- /* DST_ALPHA */
- /* ONE_MINUS_DST_ALPHA */
-
- /* BlendEquationSeparate */
- const unsigned int FUNC_ADD = 0x8006;
- const unsigned int BLEND_EQUATION = 0x8009;
- const unsigned int BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */
- const unsigned int BLEND_EQUATION_ALPHA = 0x883D;
-
- /* BlendSubtract */
- const unsigned int FUNC_SUBTRACT = 0x800A;
- const unsigned int FUNC_REVERSE_SUBTRACT = 0x800B;
-
- /* Separate Blend Functions */
- const unsigned int BLEND_DST_RGB = 0x80C8;
- const unsigned int BLEND_SRC_RGB = 0x80C9;
- const unsigned int BLEND_DST_ALPHA = 0x80CA;
- const unsigned int BLEND_SRC_ALPHA = 0x80CB;
- const unsigned int CONSTANT_COLOR = 0x8001;
- const unsigned int ONE_MINUS_CONSTANT_COLOR = 0x8002;
- const unsigned int CONSTANT_ALPHA = 0x8003;
- const unsigned int ONE_MINUS_CONSTANT_ALPHA = 0x8004;
- const unsigned int BLEND_COLOR = 0x8005;
-
- /* Buffer Objects */
- const unsigned int ARRAY_BUFFER = 0x8892;
- const unsigned int ELEMENT_ARRAY_BUFFER = 0x8893;
- const unsigned int ARRAY_BUFFER_BINDING = 0x8894;
- const unsigned int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
-
- const unsigned int STREAM_DRAW = 0x88E0;
- const unsigned int STATIC_DRAW = 0x88E4;
- const unsigned int DYNAMIC_DRAW = 0x88E8;
-
- const unsigned int BUFFER_SIZE = 0x8764;
- const unsigned int BUFFER_USAGE = 0x8765;
-
- const unsigned int CURRENT_VERTEX_ATTRIB = 0x8626;
-
- /* CullFaceMode */
- const unsigned int FRONT = 0x0404;
- const unsigned int BACK = 0x0405;
- const unsigned int FRONT_AND_BACK = 0x0408;
-
- /* DepthFunction */
- /* NEVER */
- /* LESS */
- /* EQUAL */
- /* LEQUAL */
- /* GREATER */
- /* NOTEQUAL */
- /* GEQUAL */
- /* ALWAYS */
-
- /* EnableCap */
- const unsigned int TEXTURE_2D = 0x0DE1;
- const unsigned int CULL_FACE = 0x0B44;
- const unsigned int BLEND = 0x0BE2;
- const unsigned int DITHER = 0x0BD0;
- const unsigned int STENCIL_TEST = 0x0B90;
- const unsigned int DEPTH_TEST = 0x0B71;
- const unsigned int SCISSOR_TEST = 0x0C11;
- const unsigned int POLYGON_OFFSET_FILL = 0x8037;
- const unsigned int SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
- const unsigned int SAMPLE_COVERAGE = 0x80A0;
-
- /* ErrorCode */
- const unsigned int NO_ERROR = 0;
- const unsigned int INVALID_ENUM = 0x0500;
- const unsigned int INVALID_VALUE = 0x0501;
- const unsigned int INVALID_OPERATION = 0x0502;
- const unsigned int OUT_OF_MEMORY = 0x0505;
-
- /* FrontFaceDirection */
- const unsigned int CW = 0x0900;
- const unsigned int CCW = 0x0901;
-
- /* GetPName */
- const unsigned int LINE_WIDTH = 0x0B21;
- const unsigned int ALIASED_POINT_SIZE_RANGE = 0x846D;
- const unsigned int ALIASED_LINE_WIDTH_RANGE = 0x846E;
- const unsigned int CULL_FACE_MODE = 0x0B45;
- const unsigned int FRONT_FACE = 0x0B46;
- const unsigned int DEPTH_RANGE = 0x0B70;
- const unsigned int DEPTH_WRITEMASK = 0x0B72;
- const unsigned int DEPTH_CLEAR_VALUE = 0x0B73;
- const unsigned int DEPTH_FUNC = 0x0B74;
- const unsigned int STENCIL_CLEAR_VALUE = 0x0B91;
- const unsigned int STENCIL_FUNC = 0x0B92;
- const unsigned int STENCIL_FAIL = 0x0B94;
- const unsigned int STENCIL_PASS_DEPTH_FAIL = 0x0B95;
- const unsigned int STENCIL_PASS_DEPTH_PASS = 0x0B96;
- const unsigned int STENCIL_REF = 0x0B97;
- const unsigned int STENCIL_VALUE_MASK = 0x0B93;
- const unsigned int STENCIL_WRITEMASK = 0x0B98;
- const unsigned int STENCIL_BACK_FUNC = 0x8800;
- const unsigned int STENCIL_BACK_FAIL = 0x8801;
- const unsigned int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
- const unsigned int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
- const unsigned int STENCIL_BACK_REF = 0x8CA3;
- const unsigned int STENCIL_BACK_VALUE_MASK = 0x8CA4;
- const unsigned int STENCIL_BACK_WRITEMASK = 0x8CA5;
- const unsigned int VIEWPORT = 0x0BA2;
- const unsigned int SCISSOR_BOX = 0x0C10;
- /* SCISSOR_TEST */
- const unsigned int COLOR_CLEAR_VALUE = 0x0C22;
- const unsigned int COLOR_WRITEMASK = 0x0C23;
- const unsigned int UNPACK_ALIGNMENT = 0x0CF5;
- const unsigned int PACK_ALIGNMENT = 0x0D05;
- const unsigned int MAX_TEXTURE_SIZE = 0x0D33;
- const unsigned int MAX_VIEWPORT_DIMS = 0x0D3A;
- const unsigned int SUBPIXEL_BITS = 0x0D50;
- const unsigned int RED_BITS = 0x0D52;
- const unsigned int GREEN_BITS = 0x0D53;
- const unsigned int BLUE_BITS = 0x0D54;
- const unsigned int ALPHA_BITS = 0x0D55;
- const unsigned int DEPTH_BITS = 0x0D56;
- const unsigned int STENCIL_BITS = 0x0D57;
- const unsigned int POLYGON_OFFSET_UNITS = 0x2A00;
- /* POLYGON_OFFSET_FILL */
- const unsigned int POLYGON_OFFSET_FACTOR = 0x8038;
- const unsigned int TEXTURE_BINDING_2D = 0x8069;
- const unsigned int SAMPLE_BUFFERS = 0x80A8;
- const unsigned int SAMPLES = 0x80A9;
- const unsigned int SAMPLE_COVERAGE_VALUE = 0x80AA;
- const unsigned int SAMPLE_COVERAGE_INVERT = 0x80AB;
-
- /* GetTextureParameter */
- /* TEXTURE_MAG_FILTER */
- /* TEXTURE_MIN_FILTER */
- /* TEXTURE_WRAP_S */
- /* TEXTURE_WRAP_T */
-
- const unsigned int COMPRESSED_TEXTURE_FORMATS = 0x86A3;
-
- /* HintMode */
- const unsigned int DONT_CARE = 0x1100;
- const unsigned int FASTEST = 0x1101;
- const unsigned int NICEST = 0x1102;
-
- /* HintTarget */
- const unsigned int GENERATE_MIPMAP_HINT = 0x8192;
-
- /* DataType */
- const unsigned int BYTE = 0x1400;
- const unsigned int UNSIGNED_BYTE = 0x1401;
- const unsigned int SHORT = 0x1402;
- const unsigned int UNSIGNED_SHORT = 0x1403;
- const unsigned int INT = 0x1404;
- const unsigned int UNSIGNED_INT = 0x1405;
- const unsigned int FLOAT = 0x1406;
-
- /* PixelFormat */
- const unsigned int DEPTH_COMPONENT = 0x1902;
- const unsigned int ALPHA = 0x1906;
- const unsigned int RGB = 0x1907;
- const unsigned int RGBA = 0x1908;
- const unsigned int LUMINANCE = 0x1909;
- const unsigned int LUMINANCE_ALPHA = 0x190A;
-
- /* PixelType */
- /* UNSIGNED_BYTE */
- const unsigned int UNSIGNED_SHORT_4_4_4_4 = 0x8033;
- const unsigned int UNSIGNED_SHORT_5_5_5_1 = 0x8034;
- const unsigned int UNSIGNED_SHORT_5_6_5 = 0x8363;
-
- /* Shaders */
- const unsigned int FRAGMENT_SHADER = 0x8B30;
- const unsigned int VERTEX_SHADER = 0x8B31;
- const unsigned int MAX_VERTEX_ATTRIBS = 0x8869;
- const unsigned int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
- const unsigned int MAX_VARYING_VECTORS = 0x8DFC;
- const unsigned int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
- const unsigned int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
- const unsigned int MAX_TEXTURE_IMAGE_UNITS = 0x8872;
- const unsigned int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
- const unsigned int SHADER_TYPE = 0x8B4F;
- const unsigned int DELETE_STATUS = 0x8B80;
- const unsigned int LINK_STATUS = 0x8B82;
- const unsigned int VALIDATE_STATUS = 0x8B83;
- const unsigned int ATTACHED_SHADERS = 0x8B85;
- const unsigned int ACTIVE_UNIFORMS = 0x8B86;
- const unsigned int ACTIVE_ATTRIBUTES = 0x8B89;
- const unsigned int SHADING_LANGUAGE_VERSION = 0x8B8C;
- const unsigned int CURRENT_PROGRAM = 0x8B8D;
-
- /* StencilFunction */
- const unsigned int NEVER = 0x0200;
- const unsigned int LESS = 0x0201;
- const unsigned int EQUAL = 0x0202;
- const unsigned int LEQUAL = 0x0203;
- const unsigned int GREATER = 0x0204;
- const unsigned int NOTEQUAL = 0x0205;
- const unsigned int GEQUAL = 0x0206;
- const unsigned int ALWAYS = 0x0207;
-
- /* StencilOp */
- /* ZERO */
- const unsigned int KEEP = 0x1E00;
- const unsigned int REPLACE = 0x1E01;
- const unsigned int INCR = 0x1E02;
- const unsigned int DECR = 0x1E03;
- const unsigned int INVERT = 0x150A;
- const unsigned int INCR_WRAP = 0x8507;
- const unsigned int DECR_WRAP = 0x8508;
-
- /* StringName */
- const unsigned int VENDOR = 0x1F00;
- const unsigned int RENDERER = 0x1F01;
- const unsigned int VERSION = 0x1F02;
-
- /* TextureMagFilter */
- const unsigned int NEAREST = 0x2600;
- const unsigned int LINEAR = 0x2601;
-
- /* TextureMinFilter */
- /* NEAREST */
- /* LINEAR */
- const unsigned int NEAREST_MIPMAP_NEAREST = 0x2700;
- const unsigned int LINEAR_MIPMAP_NEAREST = 0x2701;
- const unsigned int NEAREST_MIPMAP_LINEAR = 0x2702;
- const unsigned int LINEAR_MIPMAP_LINEAR = 0x2703;
-
- /* TextureParameterName */
- const unsigned int TEXTURE_MAG_FILTER = 0x2800;
- const unsigned int TEXTURE_MIN_FILTER = 0x2801;
- const unsigned int TEXTURE_WRAP_S = 0x2802;
- const unsigned int TEXTURE_WRAP_T = 0x2803;
-
- /* TextureTarget */
- /* TEXTURE_2D */
- const unsigned int TEXTURE = 0x1702;
-
- const unsigned int TEXTURE_CUBE_MAP = 0x8513;
- const unsigned int TEXTURE_BINDING_CUBE_MAP = 0x8514;
- const unsigned int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
- const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
- const unsigned int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
- const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
- const unsigned int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
- const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
- const unsigned int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
-
- /* TextureUnit */
- const unsigned int TEXTURE0 = 0x84C0;
- const unsigned int TEXTURE1 = 0x84C1;
- const unsigned int TEXTURE2 = 0x84C2;
- const unsigned int TEXTURE3 = 0x84C3;
- const unsigned int TEXTURE4 = 0x84C4;
- const unsigned int TEXTURE5 = 0x84C5;
- const unsigned int TEXTURE6 = 0x84C6;
- const unsigned int TEXTURE7 = 0x84C7;
- const unsigned int TEXTURE8 = 0x84C8;
- const unsigned int TEXTURE9 = 0x84C9;
- const unsigned int TEXTURE10 = 0x84CA;
- const unsigned int TEXTURE11 = 0x84CB;
- const unsigned int TEXTURE12 = 0x84CC;
- const unsigned int TEXTURE13 = 0x84CD;
- const unsigned int TEXTURE14 = 0x84CE;
- const unsigned int TEXTURE15 = 0x84CF;
- const unsigned int TEXTURE16 = 0x84D0;
- const unsigned int TEXTURE17 = 0x84D1;
- const unsigned int TEXTURE18 = 0x84D2;
- const unsigned int TEXTURE19 = 0x84D3;
- const unsigned int TEXTURE20 = 0x84D4;
- const unsigned int TEXTURE21 = 0x84D5;
- const unsigned int TEXTURE22 = 0x84D6;
- const unsigned int TEXTURE23 = 0x84D7;
- const unsigned int TEXTURE24 = 0x84D8;
- const unsigned int TEXTURE25 = 0x84D9;
- const unsigned int TEXTURE26 = 0x84DA;
- const unsigned int TEXTURE27 = 0x84DB;
- const unsigned int TEXTURE28 = 0x84DC;
- const unsigned int TEXTURE29 = 0x84DD;
- const unsigned int TEXTURE30 = 0x84DE;
- const unsigned int TEXTURE31 = 0x84DF;
- const unsigned int ACTIVE_TEXTURE = 0x84E0;
-
- /* TextureWrapMode */
- const unsigned int REPEAT = 0x2901;
- const unsigned int CLAMP_TO_EDGE = 0x812F;
- const unsigned int MIRRORED_REPEAT = 0x8370;
-
- /* Uniform Types */
- const unsigned int FLOAT_VEC2 = 0x8B50;
- const unsigned int FLOAT_VEC3 = 0x8B51;
- const unsigned int FLOAT_VEC4 = 0x8B52;
- const unsigned int INT_VEC2 = 0x8B53;
- const unsigned int INT_VEC3 = 0x8B54;
- const unsigned int INT_VEC4 = 0x8B55;
- const unsigned int BOOL = 0x8B56;
- const unsigned int BOOL_VEC2 = 0x8B57;
- const unsigned int BOOL_VEC3 = 0x8B58;
- const unsigned int BOOL_VEC4 = 0x8B59;
- const unsigned int FLOAT_MAT2 = 0x8B5A;
- const unsigned int FLOAT_MAT3 = 0x8B5B;
- const unsigned int FLOAT_MAT4 = 0x8B5C;
- const unsigned int SAMPLER_2D = 0x8B5E;
- const unsigned int SAMPLER_CUBE = 0x8B60;
-
- /* Vertex Arrays */
- const unsigned int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
- const unsigned int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
- const unsigned int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
- const unsigned int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
- const unsigned int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
- const unsigned int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
- const unsigned int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
-
- /* Shader Source */
- const unsigned int COMPILE_STATUS = 0x8B81;
-
- /* Shader Precision-Specified Types */
- const unsigned int LOW_FLOAT = 0x8DF0;
- const unsigned int MEDIUM_FLOAT = 0x8DF1;
- const unsigned int HIGH_FLOAT = 0x8DF2;
- const unsigned int LOW_INT = 0x8DF3;
- const unsigned int MEDIUM_INT = 0x8DF4;
- const unsigned int HIGH_INT = 0x8DF5;
-
- /* Framebuffer Object. */
- const unsigned int FRAMEBUFFER = 0x8D40;
- const unsigned int RENDERBUFFER = 0x8D41;
-
- const unsigned int RGBA4 = 0x8056;
- const unsigned int RGB5_A1 = 0x8057;
- const unsigned int RGB565 = 0x8D62;
- const unsigned int DEPTH_COMPONENT16 = 0x81A5;
- const unsigned int STENCIL_INDEX = 0x1901;
- const unsigned int STENCIL_INDEX8 = 0x8D48;
- const unsigned int DEPTH_STENCIL = 0x84F9;
-
- const unsigned int RENDERBUFFER_WIDTH = 0x8D42;
- const unsigned int RENDERBUFFER_HEIGHT = 0x8D43;
- const unsigned int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
- const unsigned int RENDERBUFFER_RED_SIZE = 0x8D50;
- const unsigned int RENDERBUFFER_GREEN_SIZE = 0x8D51;
- const unsigned int RENDERBUFFER_BLUE_SIZE = 0x8D52;
- const unsigned int RENDERBUFFER_ALPHA_SIZE = 0x8D53;
- const unsigned int RENDERBUFFER_DEPTH_SIZE = 0x8D54;
- const unsigned int RENDERBUFFER_STENCIL_SIZE = 0x8D55;
-
- const unsigned int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
- const unsigned int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
- const unsigned int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
- const unsigned int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
-
- const unsigned int COLOR_ATTACHMENT0 = 0x8CE0;
- const unsigned int DEPTH_ATTACHMENT = 0x8D00;
- const unsigned int STENCIL_ATTACHMENT = 0x8D20;
- const unsigned int DEPTH_STENCIL_ATTACHMENT = 0x821A;
-
- const unsigned int NONE = 0;
-
- const unsigned int FRAMEBUFFER_COMPLETE = 0x8CD5;
- const unsigned int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
- const unsigned int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
- const unsigned int FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
- const unsigned int FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
-
- const unsigned int FRAMEBUFFER_BINDING = 0x8CA6;
- const unsigned int RENDERBUFFER_BINDING = 0x8CA7;
- const unsigned int MAX_RENDERBUFFER_SIZE = 0x84E8;
-
- const unsigned int INVALID_FRAMEBUFFER_OPERATION = 0x0506;
-
- /* WebGL-specific enums */
- const unsigned int UNPACK_FLIP_Y_WEBGL = 0x9240;
- const unsigned int UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
- const unsigned int CONTEXT_LOST_WEBGL = 0x9242;
- const unsigned int UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
- const unsigned int BROWSER_DEFAULT_WEBGL = 0x9244;
-
- readonly attribute long drawingBufferWidth;
- readonly attribute long drawingBufferHeight;
-
- [StrictTypeChecking] void activeTexture(in unsigned long texture) raises(DOMException);
- [StrictTypeChecking] void attachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
- [StrictTypeChecking] void bindAttribLocation(in WebGLProgram program, in unsigned long index, in DOMString name) raises(DOMException);
- [StrictTypeChecking] void bindBuffer(in unsigned long target, in WebGLBuffer buffer) raises(DOMException);
- [StrictTypeChecking] void bindFramebuffer(in unsigned long target, in WebGLFramebuffer framebuffer) raises(DOMException);
- [StrictTypeChecking] void bindRenderbuffer(in unsigned long target, in WebGLRenderbuffer renderbuffer) raises(DOMException);
- [StrictTypeChecking] void bindTexture(in unsigned long target, in WebGLTexture texture) raises(DOMException);
- [StrictTypeChecking] void blendColor(in float red, in float green, in float blue, in float alpha);
- [StrictTypeChecking] void blendEquation( in unsigned long mode );
- [StrictTypeChecking] void blendEquationSeparate(in unsigned long modeRGB, in unsigned long modeAlpha);
- [StrictTypeChecking] void blendFunc(in unsigned long sfactor, in unsigned long dfactor);
- [StrictTypeChecking] void blendFuncSeparate(in unsigned long srcRGB, in unsigned long dstRGB, in unsigned long srcAlpha, in unsigned long dstAlpha);
- [StrictTypeChecking] void bufferData(in unsigned long target, in ArrayBuffer? data, in unsigned long usage) raises (DOMException);
- [StrictTypeChecking] void bufferData(in unsigned long target, in ArrayBufferView? data, in unsigned long usage) raises (DOMException);
- [StrictTypeChecking] void bufferData(in unsigned long target, in long long size, in unsigned long usage) raises (DOMException);
- [StrictTypeChecking] void bufferSubData(in unsigned long target, in long long offset, in ArrayBuffer? data) raises (DOMException);
- [StrictTypeChecking] void bufferSubData(in unsigned long target, in long long offset, in ArrayBufferView? data) raises (DOMException);
-
- [StrictTypeChecking] unsigned long checkFramebufferStatus(in unsigned long target);
- [StrictTypeChecking] void clear(in unsigned long mask);
- [StrictTypeChecking] void clearColor(in float red, in float green, in float blue, in float alpha);
- [StrictTypeChecking] void clearDepth(in float depth);
- [StrictTypeChecking] void clearStencil(in long s);
- [StrictTypeChecking] void colorMask(in boolean red, in boolean green, in boolean blue, in boolean alpha);
- [StrictTypeChecking] void compileShader(in WebGLShader shader) raises(DOMException);
-
- [StrictTypeChecking] void compressedTexImage2D(in unsigned long target, in long level, in unsigned long internalformat,
- in long width, in long height, in long border, in ArrayBufferView data);
- [StrictTypeChecking] void compressedTexSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in long width, in long height, in unsigned long format, in ArrayBufferView data);
-
- [StrictTypeChecking] void copyTexImage2D(in unsigned long target, in long level, in unsigned long internalformat, in long x, in long y, in long width, in long height, in long border);
- [StrictTypeChecking] void copyTexSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset, in long x, in long y, in long width, in long height);
-
- [StrictTypeChecking] WebGLBuffer createBuffer();
- [StrictTypeChecking] WebGLFramebuffer createFramebuffer();
- [StrictTypeChecking] WebGLProgram createProgram();
- [StrictTypeChecking] WebGLRenderbuffer createRenderbuffer();
- [StrictTypeChecking] WebGLShader createShader(in unsigned long type) raises(DOMException);
- [StrictTypeChecking] WebGLTexture createTexture();
-
- [StrictTypeChecking] void cullFace(in unsigned long mode);
-
- [StrictTypeChecking] void deleteBuffer(in WebGLBuffer buffer);
- [StrictTypeChecking] void deleteFramebuffer(in WebGLFramebuffer framebuffer);
- [StrictTypeChecking] void deleteProgram(in WebGLProgram program);
- [StrictTypeChecking] void deleteRenderbuffer(in WebGLRenderbuffer renderbuffer);
- [StrictTypeChecking] void deleteShader(in WebGLShader shader);
- [StrictTypeChecking] void deleteTexture(in WebGLTexture texture);
-
- [StrictTypeChecking] void depthFunc(in unsigned long func);
- [StrictTypeChecking] void depthMask(in boolean flag);
- // FIXME: this differs from the current WebGL spec (depthRangef)
- [StrictTypeChecking] void depthRange(in float zNear, in float zFar);
- [StrictTypeChecking] void detachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
- [StrictTypeChecking] void disable(in unsigned long cap);
- [StrictTypeChecking] void disableVertexAttribArray(in unsigned long index) raises(DOMException);
- [StrictTypeChecking] void drawArrays(in unsigned long mode, in long first, in long count) raises(DOMException);
- [StrictTypeChecking] void drawElements(in unsigned long mode, in long count, in unsigned long type, in long long offset) raises(DOMException);
-
- [StrictTypeChecking] void enable(in unsigned long cap);
- [StrictTypeChecking] void enableVertexAttribArray(in unsigned long index) raises(DOMException);
- [StrictTypeChecking] void finish();
- [StrictTypeChecking] void flush();
- [StrictTypeChecking] void framebufferRenderbuffer(in unsigned long target, in unsigned long attachment, in unsigned long renderbuffertarget, in WebGLRenderbuffer renderbuffer) raises(DOMException);
- [StrictTypeChecking] void framebufferTexture2D(in unsigned long target, in unsigned long attachment, in unsigned long textarget, in WebGLTexture texture, in long level) raises(DOMException);
- [StrictTypeChecking] void frontFace(in unsigned long mode);
- [StrictTypeChecking] void generateMipmap(in unsigned long target);
-
- [StrictTypeChecking] WebGLActiveInfo getActiveAttrib(in WebGLProgram program, in unsigned long index) raises (DOMException);
- [StrictTypeChecking] WebGLActiveInfo getActiveUniform(in WebGLProgram program, in unsigned long index) raises (DOMException);
-
- [StrictTypeChecking, Custom] void getAttachedShaders(in WebGLProgram program) raises (DOMException);
-
- [StrictTypeChecking] int getAttribLocation(in WebGLProgram program, in DOMString name);
-
- // any getBufferParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getBufferParameter();
-
- [StrictTypeChecking] WebGLContextAttributes getContextAttributes();
-
- [StrictTypeChecking] unsigned long getError();
-
- // object getExtension(in DOMString name);
- [StrictTypeChecking, Custom] void getExtension(in DOMString name);
-
- // any getFramebufferAttachmentParameter(in unsigned long target, in unsigned long attachment, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getFramebufferAttachmentParameter();
- // any getParameter(in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getParameter();
- // any getProgramParameter(in WebGLProgram program, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getProgramParameter();
- [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getProgramInfoLog(in WebGLProgram program) raises(DOMException);
- // any getRenderbufferParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getRenderbufferParameter();
- // any getShaderParameter(in WebGLShader shader, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getShaderParameter() raises(DOMException);
-
- [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getShaderInfoLog(in WebGLShader shader) raises(DOMException);
-
- [StrictTypeChecking] WebGLShaderPrecisionFormat getShaderPrecisionFormat(in unsigned long shadertype, in unsigned long precisiontype) raises(DOMException);
-
- [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getShaderSource(in WebGLShader shader) raises(DOMException);
-
- // DOMString[] getSupportedExtensions()
- [StrictTypeChecking, Custom] void getSupportedExtensions();
-
- // any getTexParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getTexParameter();
-
- // any getUniform(in WebGLProgram program, in WebGLUniformLocation location) raises(DOMException);
- [StrictTypeChecking, Custom] void getUniform();
-
- [StrictTypeChecking] WebGLUniformLocation getUniformLocation(in WebGLProgram program, in DOMString name) raises(DOMException);
-
- // any getVertexAttrib(in unsigned long index, in unsigned long pname) raises(DOMException);
- [StrictTypeChecking, Custom] void getVertexAttrib();
-
- [StrictTypeChecking] long long getVertexAttribOffset(in unsigned long index, in unsigned long pname);
-
- [StrictTypeChecking] void hint(in unsigned long target, in unsigned long mode);
- [StrictTypeChecking] boolean isBuffer(in WebGLBuffer buffer);
- [StrictTypeChecking] boolean isContextLost();
- [StrictTypeChecking] boolean isEnabled(in unsigned long cap);
- [StrictTypeChecking] boolean isFramebuffer(in WebGLFramebuffer framebuffer);
- [StrictTypeChecking] boolean isProgram(in WebGLProgram program);
- [StrictTypeChecking] boolean isRenderbuffer(in WebGLRenderbuffer renderbuffer);
- [StrictTypeChecking] boolean isShader(in WebGLShader shader);
- [StrictTypeChecking] boolean isTexture(in WebGLTexture texture);
- [StrictTypeChecking] void lineWidth(in float width);
- [StrictTypeChecking] void linkProgram(in WebGLProgram program) raises(DOMException);
- [StrictTypeChecking] void pixelStorei(in unsigned long pname, in long param);
- [StrictTypeChecking] void polygonOffset(in float factor, in float units);
-
- [StrictTypeChecking] void readPixels(in long x, in long y, in long width, in long height, in unsigned long format, in unsigned long type, in ArrayBufferView pixels) raises(DOMException);
-
- [StrictTypeChecking] void releaseShaderCompiler();
- [StrictTypeChecking] void renderbufferStorage(in unsigned long target, in unsigned long internalformat, in long width, in long height);
- [StrictTypeChecking] void sampleCoverage(in float value, in boolean invert);
- [StrictTypeChecking] void scissor(in long x, in long y, in long width, in long height);
- [StrictTypeChecking] void shaderSource(in WebGLShader shader, in DOMString string) raises(DOMException);
- [StrictTypeChecking] void stencilFunc(in unsigned long func, in long ref, in unsigned long mask);
- [StrictTypeChecking] void stencilFuncSeparate(in unsigned long face, in unsigned long func, in long ref, in unsigned long mask);
- [StrictTypeChecking] void stencilMask(in unsigned long mask);
- [StrictTypeChecking] void stencilMaskSeparate(in unsigned long face, in unsigned long mask);
- [StrictTypeChecking] void stencilOp(in unsigned long fail, in unsigned long zfail, in unsigned long zpass);
- [StrictTypeChecking] void stencilOpSeparate(in unsigned long face, in unsigned long fail, in unsigned long zfail, in unsigned long zpass);
-
- [StrictTypeChecking] void texParameterf(in unsigned long target, in unsigned long pname, in float param);
- [StrictTypeChecking] void texParameteri(in unsigned long target, in unsigned long pname, in long param);
-
- // Supported forms:
- [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat, in long width, in long height,
- in long border, in unsigned long format, in unsigned long type, in ArrayBufferView? pixels) raises (DOMException);
- [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
- in unsigned long format, in unsigned long type, in ImageData? pixels) raises (DOMException);
- [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
- in unsigned long format, in unsigned long type, in HTMLImageElement? image) raises (DOMException);
- [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
- in unsigned long format, in unsigned long type, in HTMLCanvasElement? canvas) raises (DOMException);
+[
+ Conditional=WEBGL,
+ JSCustomMarkFunction,
+ DoNotCheckConstants
+] interface WebGLRenderingContext : CanvasRenderingContext {
+
+ /* ClearBufferMask */
+ const unsigned int DEPTH_BUFFER_BIT = 0x00000100;
+ const unsigned int STENCIL_BUFFER_BIT = 0x00000400;
+ const unsigned int COLOR_BUFFER_BIT = 0x00004000;
+
+ /* BeginMode */
+ const unsigned int POINTS = 0x0000;
+ const unsigned int LINES = 0x0001;
+ const unsigned int LINE_LOOP = 0x0002;
+ const unsigned int LINE_STRIP = 0x0003;
+ const unsigned int TRIANGLES = 0x0004;
+ const unsigned int TRIANGLE_STRIP = 0x0005;
+ const unsigned int TRIANGLE_FAN = 0x0006;
+
+ /* AlphaFunction (not supported in ES20) */
+ /* NEVER */
+ /* LESS */
+ /* EQUAL */
+ /* LEQUAL */
+ /* GREATER */
+ /* NOTEQUAL */
+ /* GEQUAL */
+ /* ALWAYS */
+
+ /* BlendingFactorDest */
+ const unsigned int ZERO = 0;
+ const unsigned int ONE = 1;
+ const unsigned int SRC_COLOR = 0x0300;
+ const unsigned int ONE_MINUS_SRC_COLOR = 0x0301;
+ const unsigned int SRC_ALPHA = 0x0302;
+ const unsigned int ONE_MINUS_SRC_ALPHA = 0x0303;
+ const unsigned int DST_ALPHA = 0x0304;
+ const unsigned int ONE_MINUS_DST_ALPHA = 0x0305;
+
+ /* BlendingFactorSrc */
+ /* ZERO */
+ /* ONE */
+ const unsigned int DST_COLOR = 0x0306;
+ const unsigned int ONE_MINUS_DST_COLOR = 0x0307;
+ const unsigned int SRC_ALPHA_SATURATE = 0x0308;
+ /* SRC_ALPHA */
+ /* ONE_MINUS_SRC_ALPHA */
+ /* DST_ALPHA */
+ /* ONE_MINUS_DST_ALPHA */
+
+ /* BlendEquationSeparate */
+ const unsigned int FUNC_ADD = 0x8006;
+ const unsigned int BLEND_EQUATION = 0x8009;
+ const unsigned int BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */
+ const unsigned int BLEND_EQUATION_ALPHA = 0x883D;
+
+ /* BlendSubtract */
+ const unsigned int FUNC_SUBTRACT = 0x800A;
+ const unsigned int FUNC_REVERSE_SUBTRACT = 0x800B;
+
+ /* Separate Blend Functions */
+ const unsigned int BLEND_DST_RGB = 0x80C8;
+ const unsigned int BLEND_SRC_RGB = 0x80C9;
+ const unsigned int BLEND_DST_ALPHA = 0x80CA;
+ const unsigned int BLEND_SRC_ALPHA = 0x80CB;
+ const unsigned int CONSTANT_COLOR = 0x8001;
+ const unsigned int ONE_MINUS_CONSTANT_COLOR = 0x8002;
+ const unsigned int CONSTANT_ALPHA = 0x8003;
+ const unsigned int ONE_MINUS_CONSTANT_ALPHA = 0x8004;
+ const unsigned int BLEND_COLOR = 0x8005;
+
+ /* Buffer Objects */
+ const unsigned int ARRAY_BUFFER = 0x8892;
+ const unsigned int ELEMENT_ARRAY_BUFFER = 0x8893;
+ const unsigned int ARRAY_BUFFER_BINDING = 0x8894;
+ const unsigned int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
+
+ const unsigned int STREAM_DRAW = 0x88E0;
+ const unsigned int STATIC_DRAW = 0x88E4;
+ const unsigned int DYNAMIC_DRAW = 0x88E8;
+
+ const unsigned int BUFFER_SIZE = 0x8764;
+ const unsigned int BUFFER_USAGE = 0x8765;
+
+ const unsigned int CURRENT_VERTEX_ATTRIB = 0x8626;
+
+ /* CullFaceMode */
+ const unsigned int FRONT = 0x0404;
+ const unsigned int BACK = 0x0405;
+ const unsigned int FRONT_AND_BACK = 0x0408;
+
+ /* DepthFunction */
+ /* NEVER */
+ /* LESS */
+ /* EQUAL */
+ /* LEQUAL */
+ /* GREATER */
+ /* NOTEQUAL */
+ /* GEQUAL */
+ /* ALWAYS */
+
+ /* EnableCap */
+ const unsigned int TEXTURE_2D = 0x0DE1;
+ const unsigned int CULL_FACE = 0x0B44;
+ const unsigned int BLEND = 0x0BE2;
+ const unsigned int DITHER = 0x0BD0;
+ const unsigned int STENCIL_TEST = 0x0B90;
+ const unsigned int DEPTH_TEST = 0x0B71;
+ const unsigned int SCISSOR_TEST = 0x0C11;
+ const unsigned int POLYGON_OFFSET_FILL = 0x8037;
+ const unsigned int SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
+ const unsigned int SAMPLE_COVERAGE = 0x80A0;
+
+ /* ErrorCode */
+ const unsigned int NO_ERROR = 0;
+ const unsigned int INVALID_ENUM = 0x0500;
+ const unsigned int INVALID_VALUE = 0x0501;
+ const unsigned int INVALID_OPERATION = 0x0502;
+ const unsigned int OUT_OF_MEMORY = 0x0505;
+
+ /* FrontFaceDirection */
+ const unsigned int CW = 0x0900;
+ const unsigned int CCW = 0x0901;
+
+ /* GetPName */
+ const unsigned int LINE_WIDTH = 0x0B21;
+ const unsigned int ALIASED_POINT_SIZE_RANGE = 0x846D;
+ const unsigned int ALIASED_LINE_WIDTH_RANGE = 0x846E;
+ const unsigned int CULL_FACE_MODE = 0x0B45;
+ const unsigned int FRONT_FACE = 0x0B46;
+ const unsigned int DEPTH_RANGE = 0x0B70;
+ const unsigned int DEPTH_WRITEMASK = 0x0B72;
+ const unsigned int DEPTH_CLEAR_VALUE = 0x0B73;
+ const unsigned int DEPTH_FUNC = 0x0B74;
+ const unsigned int STENCIL_CLEAR_VALUE = 0x0B91;
+ const unsigned int STENCIL_FUNC = 0x0B92;
+ const unsigned int STENCIL_FAIL = 0x0B94;
+ const unsigned int STENCIL_PASS_DEPTH_FAIL = 0x0B95;
+ const unsigned int STENCIL_PASS_DEPTH_PASS = 0x0B96;
+ const unsigned int STENCIL_REF = 0x0B97;
+ const unsigned int STENCIL_VALUE_MASK = 0x0B93;
+ const unsigned int STENCIL_WRITEMASK = 0x0B98;
+ const unsigned int STENCIL_BACK_FUNC = 0x8800;
+ const unsigned int STENCIL_BACK_FAIL = 0x8801;
+ const unsigned int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
+ const unsigned int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
+ const unsigned int STENCIL_BACK_REF = 0x8CA3;
+ const unsigned int STENCIL_BACK_VALUE_MASK = 0x8CA4;
+ const unsigned int STENCIL_BACK_WRITEMASK = 0x8CA5;
+ const unsigned int VIEWPORT = 0x0BA2;
+ const unsigned int SCISSOR_BOX = 0x0C10;
+ /* SCISSOR_TEST */
+ const unsigned int COLOR_CLEAR_VALUE = 0x0C22;
+ const unsigned int COLOR_WRITEMASK = 0x0C23;
+ const unsigned int UNPACK_ALIGNMENT = 0x0CF5;
+ const unsigned int PACK_ALIGNMENT = 0x0D05;
+ const unsigned int MAX_TEXTURE_SIZE = 0x0D33;
+ const unsigned int MAX_VIEWPORT_DIMS = 0x0D3A;
+ const unsigned int SUBPIXEL_BITS = 0x0D50;
+ const unsigned int RED_BITS = 0x0D52;
+ const unsigned int GREEN_BITS = 0x0D53;
+ const unsigned int BLUE_BITS = 0x0D54;
+ const unsigned int ALPHA_BITS = 0x0D55;
+ const unsigned int DEPTH_BITS = 0x0D56;
+ const unsigned int STENCIL_BITS = 0x0D57;
+ const unsigned int POLYGON_OFFSET_UNITS = 0x2A00;
+ /* POLYGON_OFFSET_FILL */
+ const unsigned int POLYGON_OFFSET_FACTOR = 0x8038;
+ const unsigned int TEXTURE_BINDING_2D = 0x8069;
+ const unsigned int SAMPLE_BUFFERS = 0x80A8;
+ const unsigned int SAMPLES = 0x80A9;
+ const unsigned int SAMPLE_COVERAGE_VALUE = 0x80AA;
+ const unsigned int SAMPLE_COVERAGE_INVERT = 0x80AB;
+
+ /* GetTextureParameter */
+ /* TEXTURE_MAG_FILTER */
+ /* TEXTURE_MIN_FILTER */
+ /* TEXTURE_WRAP_S */
+ /* TEXTURE_WRAP_T */
+
+ const unsigned int COMPRESSED_TEXTURE_FORMATS = 0x86A3;
+
+ /* HintMode */
+ const unsigned int DONT_CARE = 0x1100;
+ const unsigned int FASTEST = 0x1101;
+ const unsigned int NICEST = 0x1102;
+
+ /* HintTarget */
+ const unsigned int GENERATE_MIPMAP_HINT = 0x8192;
+
+ /* DataType */
+ const unsigned int BYTE = 0x1400;
+ const unsigned int UNSIGNED_BYTE = 0x1401;
+ const unsigned int SHORT = 0x1402;
+ const unsigned int UNSIGNED_SHORT = 0x1403;
+ const unsigned int INT = 0x1404;
+ const unsigned int UNSIGNED_INT = 0x1405;
+ const unsigned int FLOAT = 0x1406;
+
+ /* PixelFormat */
+ const unsigned int DEPTH_COMPONENT = 0x1902;
+ const unsigned int ALPHA = 0x1906;
+ const unsigned int RGB = 0x1907;
+ const unsigned int RGBA = 0x1908;
+ const unsigned int LUMINANCE = 0x1909;
+ const unsigned int LUMINANCE_ALPHA = 0x190A;
+
+ /* PixelType */
+ /* UNSIGNED_BYTE */
+ const unsigned int UNSIGNED_SHORT_4_4_4_4 = 0x8033;
+ const unsigned int UNSIGNED_SHORT_5_5_5_1 = 0x8034;
+ const unsigned int UNSIGNED_SHORT_5_6_5 = 0x8363;
+
+ /* Shaders */
+ const unsigned int FRAGMENT_SHADER = 0x8B30;
+ const unsigned int VERTEX_SHADER = 0x8B31;
+ const unsigned int MAX_VERTEX_ATTRIBS = 0x8869;
+ const unsigned int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
+ const unsigned int MAX_VARYING_VECTORS = 0x8DFC;
+ const unsigned int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
+ const unsigned int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
+ const unsigned int MAX_TEXTURE_IMAGE_UNITS = 0x8872;
+ const unsigned int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
+ const unsigned int SHADER_TYPE = 0x8B4F;
+ const unsigned int DELETE_STATUS = 0x8B80;
+ const unsigned int LINK_STATUS = 0x8B82;
+ const unsigned int VALIDATE_STATUS = 0x8B83;
+ const unsigned int ATTACHED_SHADERS = 0x8B85;
+ const unsigned int ACTIVE_UNIFORMS = 0x8B86;
+ const unsigned int ACTIVE_ATTRIBUTES = 0x8B89;
+ const unsigned int SHADING_LANGUAGE_VERSION = 0x8B8C;
+ const unsigned int CURRENT_PROGRAM = 0x8B8D;
+
+ /* StencilFunction */
+ const unsigned int NEVER = 0x0200;
+ const unsigned int LESS = 0x0201;
+ const unsigned int EQUAL = 0x0202;
+ const unsigned int LEQUAL = 0x0203;
+ const unsigned int GREATER = 0x0204;
+ const unsigned int NOTEQUAL = 0x0205;
+ const unsigned int GEQUAL = 0x0206;
+ const unsigned int ALWAYS = 0x0207;
+
+ /* StencilOp */
+ /* ZERO */
+ const unsigned int KEEP = 0x1E00;
+ const unsigned int REPLACE = 0x1E01;
+ const unsigned int INCR = 0x1E02;
+ const unsigned int DECR = 0x1E03;
+ const unsigned int INVERT = 0x150A;
+ const unsigned int INCR_WRAP = 0x8507;
+ const unsigned int DECR_WRAP = 0x8508;
+
+ /* StringName */
+ const unsigned int VENDOR = 0x1F00;
+ const unsigned int RENDERER = 0x1F01;
+ const unsigned int VERSION = 0x1F02;
+
+ /* TextureMagFilter */
+ const unsigned int NEAREST = 0x2600;
+ const unsigned int LINEAR = 0x2601;
+
+ /* TextureMinFilter */
+ /* NEAREST */
+ /* LINEAR */
+ const unsigned int NEAREST_MIPMAP_NEAREST = 0x2700;
+ const unsigned int LINEAR_MIPMAP_NEAREST = 0x2701;
+ const unsigned int NEAREST_MIPMAP_LINEAR = 0x2702;
+ const unsigned int LINEAR_MIPMAP_LINEAR = 0x2703;
+
+ /* TextureParameterName */
+ const unsigned int TEXTURE_MAG_FILTER = 0x2800;
+ const unsigned int TEXTURE_MIN_FILTER = 0x2801;
+ const unsigned int TEXTURE_WRAP_S = 0x2802;
+ const unsigned int TEXTURE_WRAP_T = 0x2803;
+
+ /* TextureTarget */
+ /* TEXTURE_2D */
+ const unsigned int TEXTURE = 0x1702;
+
+ const unsigned int TEXTURE_CUBE_MAP = 0x8513;
+ const unsigned int TEXTURE_BINDING_CUBE_MAP = 0x8514;
+ const unsigned int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
+ const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
+ const unsigned int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
+ const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
+ const unsigned int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
+ const unsigned int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
+ const unsigned int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
+
+ /* TextureUnit */
+ const unsigned int TEXTURE0 = 0x84C0;
+ const unsigned int TEXTURE1 = 0x84C1;
+ const unsigned int TEXTURE2 = 0x84C2;
+ const unsigned int TEXTURE3 = 0x84C3;
+ const unsigned int TEXTURE4 = 0x84C4;
+ const unsigned int TEXTURE5 = 0x84C5;
+ const unsigned int TEXTURE6 = 0x84C6;
+ const unsigned int TEXTURE7 = 0x84C7;
+ const unsigned int TEXTURE8 = 0x84C8;
+ const unsigned int TEXTURE9 = 0x84C9;
+ const unsigned int TEXTURE10 = 0x84CA;
+ const unsigned int TEXTURE11 = 0x84CB;
+ const unsigned int TEXTURE12 = 0x84CC;
+ const unsigned int TEXTURE13 = 0x84CD;
+ const unsigned int TEXTURE14 = 0x84CE;
+ const unsigned int TEXTURE15 = 0x84CF;
+ const unsigned int TEXTURE16 = 0x84D0;
+ const unsigned int TEXTURE17 = 0x84D1;
+ const unsigned int TEXTURE18 = 0x84D2;
+ const unsigned int TEXTURE19 = 0x84D3;
+ const unsigned int TEXTURE20 = 0x84D4;
+ const unsigned int TEXTURE21 = 0x84D5;
+ const unsigned int TEXTURE22 = 0x84D6;
+ const unsigned int TEXTURE23 = 0x84D7;
+ const unsigned int TEXTURE24 = 0x84D8;
+ const unsigned int TEXTURE25 = 0x84D9;
+ const unsigned int TEXTURE26 = 0x84DA;
+ const unsigned int TEXTURE27 = 0x84DB;
+ const unsigned int TEXTURE28 = 0x84DC;
+ const unsigned int TEXTURE29 = 0x84DD;
+ const unsigned int TEXTURE30 = 0x84DE;
+ const unsigned int TEXTURE31 = 0x84DF;
+ const unsigned int ACTIVE_TEXTURE = 0x84E0;
+
+ /* TextureWrapMode */
+ const unsigned int REPEAT = 0x2901;
+ const unsigned int CLAMP_TO_EDGE = 0x812F;
+ const unsigned int MIRRORED_REPEAT = 0x8370;
+
+ /* Uniform Types */
+ const unsigned int FLOAT_VEC2 = 0x8B50;
+ const unsigned int FLOAT_VEC3 = 0x8B51;
+ const unsigned int FLOAT_VEC4 = 0x8B52;
+ const unsigned int INT_VEC2 = 0x8B53;
+ const unsigned int INT_VEC3 = 0x8B54;
+ const unsigned int INT_VEC4 = 0x8B55;
+ const unsigned int BOOL = 0x8B56;
+ const unsigned int BOOL_VEC2 = 0x8B57;
+ const unsigned int BOOL_VEC3 = 0x8B58;
+ const unsigned int BOOL_VEC4 = 0x8B59;
+ const unsigned int FLOAT_MAT2 = 0x8B5A;
+ const unsigned int FLOAT_MAT3 = 0x8B5B;
+ const unsigned int FLOAT_MAT4 = 0x8B5C;
+ const unsigned int SAMPLER_2D = 0x8B5E;
+ const unsigned int SAMPLER_CUBE = 0x8B60;
+
+ /* Vertex Arrays */
+ const unsigned int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
+ const unsigned int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
+ const unsigned int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
+ const unsigned int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
+ const unsigned int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
+ const unsigned int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
+ const unsigned int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
+
+ /* Shader Source */
+ const unsigned int COMPILE_STATUS = 0x8B81;
+
+ /* Shader Precision-Specified Types */
+ const unsigned int LOW_FLOAT = 0x8DF0;
+ const unsigned int MEDIUM_FLOAT = 0x8DF1;
+ const unsigned int HIGH_FLOAT = 0x8DF2;
+ const unsigned int LOW_INT = 0x8DF3;
+ const unsigned int MEDIUM_INT = 0x8DF4;
+ const unsigned int HIGH_INT = 0x8DF5;
+
+ /* Framebuffer Object. */
+ const unsigned int FRAMEBUFFER = 0x8D40;
+ const unsigned int RENDERBUFFER = 0x8D41;
+
+ const unsigned int RGBA4 = 0x8056;
+ const unsigned int RGB5_A1 = 0x8057;
+ const unsigned int RGB565 = 0x8D62;
+ const unsigned int DEPTH_COMPONENT16 = 0x81A5;
+ const unsigned int STENCIL_INDEX = 0x1901;
+ const unsigned int STENCIL_INDEX8 = 0x8D48;
+ const unsigned int DEPTH_STENCIL = 0x84F9;
+
+ const unsigned int RENDERBUFFER_WIDTH = 0x8D42;
+ const unsigned int RENDERBUFFER_HEIGHT = 0x8D43;
+ const unsigned int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
+ const unsigned int RENDERBUFFER_RED_SIZE = 0x8D50;
+ const unsigned int RENDERBUFFER_GREEN_SIZE = 0x8D51;
+ const unsigned int RENDERBUFFER_BLUE_SIZE = 0x8D52;
+ const unsigned int RENDERBUFFER_ALPHA_SIZE = 0x8D53;
+ const unsigned int RENDERBUFFER_DEPTH_SIZE = 0x8D54;
+ const unsigned int RENDERBUFFER_STENCIL_SIZE = 0x8D55;
+
+ const unsigned int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
+ const unsigned int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
+ const unsigned int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
+ const unsigned int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
+
+ const unsigned int COLOR_ATTACHMENT0 = 0x8CE0;
+ const unsigned int DEPTH_ATTACHMENT = 0x8D00;
+ const unsigned int STENCIL_ATTACHMENT = 0x8D20;
+ const unsigned int DEPTH_STENCIL_ATTACHMENT = 0x821A;
+
+ const unsigned int NONE = 0;
+
+ const unsigned int FRAMEBUFFER_COMPLETE = 0x8CD5;
+ const unsigned int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
+ const unsigned int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
+ const unsigned int FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
+ const unsigned int FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
+
+ const unsigned int FRAMEBUFFER_BINDING = 0x8CA6;
+ const unsigned int RENDERBUFFER_BINDING = 0x8CA7;
+ const unsigned int MAX_RENDERBUFFER_SIZE = 0x84E8;
+
+ const unsigned int INVALID_FRAMEBUFFER_OPERATION = 0x0506;
+
+ /* WebGL-specific enums */
+ const unsigned int UNPACK_FLIP_Y_WEBGL = 0x9240;
+ const unsigned int UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
+ const unsigned int CONTEXT_LOST_WEBGL = 0x9242;
+ const unsigned int UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
+ const unsigned int BROWSER_DEFAULT_WEBGL = 0x9244;
+
+ readonly attribute long drawingBufferWidth;
+ readonly attribute long drawingBufferHeight;
+
+ [StrictTypeChecking] void activeTexture(in unsigned long texture) raises(DOMException);
+ [StrictTypeChecking] void attachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
+ [StrictTypeChecking] void bindAttribLocation(in WebGLProgram program, in unsigned long index, in DOMString name) raises(DOMException);
+ [StrictTypeChecking] void bindBuffer(in unsigned long target, in WebGLBuffer buffer) raises(DOMException);
+ [StrictTypeChecking] void bindFramebuffer(in unsigned long target, in WebGLFramebuffer framebuffer) raises(DOMException);
+ [StrictTypeChecking] void bindRenderbuffer(in unsigned long target, in WebGLRenderbuffer renderbuffer) raises(DOMException);
+ [StrictTypeChecking] void bindTexture(in unsigned long target, in WebGLTexture texture) raises(DOMException);
+ [StrictTypeChecking] void blendColor(in float red, in float green, in float blue, in float alpha);
+ [StrictTypeChecking] void blendEquation( in unsigned long mode );
+ [StrictTypeChecking] void blendEquationSeparate(in unsigned long modeRGB, in unsigned long modeAlpha);
+ [StrictTypeChecking] void blendFunc(in unsigned long sfactor, in unsigned long dfactor);
+ [StrictTypeChecking] void blendFuncSeparate(in unsigned long srcRGB, in unsigned long dstRGB, in unsigned long srcAlpha, in unsigned long dstAlpha);
+ [StrictTypeChecking] void bufferData(in unsigned long target, in ArrayBuffer? data, in unsigned long usage) raises (DOMException);
+ [StrictTypeChecking] void bufferData(in unsigned long target, in ArrayBufferView? data, in unsigned long usage) raises (DOMException);
+ [StrictTypeChecking] void bufferData(in unsigned long target, in long long size, in unsigned long usage) raises (DOMException);
+ [StrictTypeChecking] void bufferSubData(in unsigned long target, in long long offset, in ArrayBuffer? data) raises (DOMException);
+ [StrictTypeChecking] void bufferSubData(in unsigned long target, in long long offset, in ArrayBufferView? data) raises (DOMException);
+
+ [StrictTypeChecking] unsigned long checkFramebufferStatus(in unsigned long target);
+ [StrictTypeChecking] void clear(in unsigned long mask);
+ [StrictTypeChecking] void clearColor(in float red, in float green, in float blue, in float alpha);
+ [StrictTypeChecking] void clearDepth(in float depth);
+ [StrictTypeChecking] void clearStencil(in long s);
+ [StrictTypeChecking] void colorMask(in boolean red, in boolean green, in boolean blue, in boolean alpha);
+ [StrictTypeChecking] void compileShader(in WebGLShader shader) raises(DOMException);
+
+ [StrictTypeChecking] void compressedTexImage2D(in unsigned long target, in long level, in unsigned long internalformat,
+ in long width, in long height, in long border, in ArrayBufferView data);
+ [StrictTypeChecking] void compressedTexSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in long width, in long height, in unsigned long format, in ArrayBufferView data);
+
+ [StrictTypeChecking] void copyTexImage2D(in unsigned long target, in long level, in unsigned long internalformat, in long x, in long y, in long width, in long height, in long border);
+ [StrictTypeChecking] void copyTexSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset, in long x, in long y, in long width, in long height);
+
+ [StrictTypeChecking] WebGLBuffer createBuffer();
+ [StrictTypeChecking] WebGLFramebuffer createFramebuffer();
+ [StrictTypeChecking] WebGLProgram createProgram();
+ [StrictTypeChecking] WebGLRenderbuffer createRenderbuffer();
+ [StrictTypeChecking] WebGLShader createShader(in unsigned long type) raises(DOMException);
+ [StrictTypeChecking] WebGLTexture createTexture();
+
+ [StrictTypeChecking] void cullFace(in unsigned long mode);
+
+ [StrictTypeChecking] void deleteBuffer(in WebGLBuffer buffer);
+ [StrictTypeChecking] void deleteFramebuffer(in WebGLFramebuffer framebuffer);
+ [StrictTypeChecking] void deleteProgram(in WebGLProgram program);
+ [StrictTypeChecking] void deleteRenderbuffer(in WebGLRenderbuffer renderbuffer);
+ [StrictTypeChecking] void deleteShader(in WebGLShader shader);
+ [StrictTypeChecking] void deleteTexture(in WebGLTexture texture);
+
+ [StrictTypeChecking] void depthFunc(in unsigned long func);
+ [StrictTypeChecking] void depthMask(in boolean flag);
+ // FIXME: this differs from the current WebGL spec (depthRangef)
+ [StrictTypeChecking] void depthRange(in float zNear, in float zFar);
+ [StrictTypeChecking] void detachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
+ [StrictTypeChecking] void disable(in unsigned long cap);
+ [StrictTypeChecking] void disableVertexAttribArray(in unsigned long index) raises(DOMException);
+ [StrictTypeChecking] void drawArrays(in unsigned long mode, in long first, in long count) raises(DOMException);
+ [StrictTypeChecking] void drawElements(in unsigned long mode, in long count, in unsigned long type, in long long offset) raises(DOMException);
+
+ [StrictTypeChecking] void enable(in unsigned long cap);
+ [StrictTypeChecking] void enableVertexAttribArray(in unsigned long index) raises(DOMException);
+ [StrictTypeChecking] void finish();
+ [StrictTypeChecking] void flush();
+ [StrictTypeChecking] void framebufferRenderbuffer(in unsigned long target, in unsigned long attachment, in unsigned long renderbuffertarget, in WebGLRenderbuffer renderbuffer) raises(DOMException);
+ [StrictTypeChecking] void framebufferTexture2D(in unsigned long target, in unsigned long attachment, in unsigned long textarget, in WebGLTexture texture, in long level) raises(DOMException);
+ [StrictTypeChecking] void frontFace(in unsigned long mode);
+ [StrictTypeChecking] void generateMipmap(in unsigned long target);
+
+ [StrictTypeChecking] WebGLActiveInfo getActiveAttrib(in WebGLProgram program, in unsigned long index) raises (DOMException);
+ [StrictTypeChecking] WebGLActiveInfo getActiveUniform(in WebGLProgram program, in unsigned long index) raises (DOMException);
+
+ [StrictTypeChecking, Custom] void getAttachedShaders(in WebGLProgram program) raises (DOMException);
+
+ [StrictTypeChecking] int getAttribLocation(in WebGLProgram program, in DOMString name);
+
+ // any getBufferParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getBufferParameter();
+
+ [StrictTypeChecking] WebGLContextAttributes getContextAttributes();
+
+ [StrictTypeChecking] unsigned long getError();
+
+ // object getExtension(in DOMString name);
+ [StrictTypeChecking, Custom] void getExtension(in DOMString name);
+
+ // any getFramebufferAttachmentParameter(in unsigned long target, in unsigned long attachment, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getFramebufferAttachmentParameter();
+ // any getParameter(in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getParameter();
+ // any getProgramParameter(in WebGLProgram program, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getProgramParameter();
+ [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getProgramInfoLog(in WebGLProgram program) raises(DOMException);
+ // any getRenderbufferParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getRenderbufferParameter();
+ // any getShaderParameter(in WebGLShader shader, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getShaderParameter() raises(DOMException);
+
+ [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getShaderInfoLog(in WebGLShader shader) raises(DOMException);
+
+ [StrictTypeChecking] WebGLShaderPrecisionFormat getShaderPrecisionFormat(in unsigned long shadertype, in unsigned long precisiontype) raises(DOMException);
+
+ [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getShaderSource(in WebGLShader shader) raises(DOMException);
+
+ // DOMString[] getSupportedExtensions()
+ [StrictTypeChecking, Custom] void getSupportedExtensions();
+
+ // any getTexParameter(in unsigned long target, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getTexParameter();
+
+ // any getUniform(in WebGLProgram program, in WebGLUniformLocation location) raises(DOMException);
+ [StrictTypeChecking, Custom] void getUniform();
+
+ [StrictTypeChecking] WebGLUniformLocation getUniformLocation(in WebGLProgram program, in DOMString name) raises(DOMException);
+
+ // any getVertexAttrib(in unsigned long index, in unsigned long pname) raises(DOMException);
+ [StrictTypeChecking, Custom] void getVertexAttrib();
+
+ [StrictTypeChecking] long long getVertexAttribOffset(in unsigned long index, in unsigned long pname);
+
+ [StrictTypeChecking] void hint(in unsigned long target, in unsigned long mode);
+ [StrictTypeChecking] boolean isBuffer(in WebGLBuffer buffer);
+ [StrictTypeChecking] boolean isContextLost();
+ [StrictTypeChecking] boolean isEnabled(in unsigned long cap);
+ [StrictTypeChecking] boolean isFramebuffer(in WebGLFramebuffer framebuffer);
+ [StrictTypeChecking] boolean isProgram(in WebGLProgram program);
+ [StrictTypeChecking] boolean isRenderbuffer(in WebGLRenderbuffer renderbuffer);
+ [StrictTypeChecking] boolean isShader(in WebGLShader shader);
+ [StrictTypeChecking] boolean isTexture(in WebGLTexture texture);
+ [StrictTypeChecking] void lineWidth(in float width);
+ [StrictTypeChecking] void linkProgram(in WebGLProgram program) raises(DOMException);
+ [StrictTypeChecking] void pixelStorei(in unsigned long pname, in long param);
+ [StrictTypeChecking] void polygonOffset(in float factor, in float units);
+
+ [StrictTypeChecking] void readPixels(in long x, in long y, in long width, in long height, in unsigned long format, in unsigned long type, in ArrayBufferView pixels) raises(DOMException);
+
+ [StrictTypeChecking] void releaseShaderCompiler();
+ [StrictTypeChecking] void renderbufferStorage(in unsigned long target, in unsigned long internalformat, in long width, in long height);
+ [StrictTypeChecking] void sampleCoverage(in float value, in boolean invert);
+ [StrictTypeChecking] void scissor(in long x, in long y, in long width, in long height);
+ [StrictTypeChecking] void shaderSource(in WebGLShader shader, in DOMString string) raises(DOMException);
+ [StrictTypeChecking] void stencilFunc(in unsigned long func, in long ref, in unsigned long mask);
+ [StrictTypeChecking] void stencilFuncSeparate(in unsigned long face, in unsigned long func, in long ref, in unsigned long mask);
+ [StrictTypeChecking] void stencilMask(in unsigned long mask);
+ [StrictTypeChecking] void stencilMaskSeparate(in unsigned long face, in unsigned long mask);
+ [StrictTypeChecking] void stencilOp(in unsigned long fail, in unsigned long zfail, in unsigned long zpass);
+ [StrictTypeChecking] void stencilOpSeparate(in unsigned long face, in unsigned long fail, in unsigned long zfail, in unsigned long zpass);
+
+ [StrictTypeChecking] void texParameterf(in unsigned long target, in unsigned long pname, in float param);
+ [StrictTypeChecking] void texParameteri(in unsigned long target, in unsigned long pname, in long param);
+
+ // Supported forms:
+ [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat, in long width, in long height,
+ in long border, in unsigned long format, in unsigned long type, in ArrayBufferView? pixels) raises (DOMException);
+ [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
+ in unsigned long format, in unsigned long type, in ImageData? pixels) raises (DOMException);
+ [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
+ in unsigned long format, in unsigned long type, in HTMLImageElement? image) raises (DOMException);
+ [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
+ in unsigned long format, in unsigned long type, in HTMLCanvasElement? canvas) raises (DOMException);
#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
- [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
- in unsigned long format, in unsigned long type, in HTMLVideoElement? video) raises (DOMException);
+ [StrictTypeChecking] void texImage2D(in unsigned long target, in long level, in unsigned long internalformat,
+ in unsigned long format, in unsigned long type, in HTMLVideoElement? video) raises (DOMException);
#endif
- [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in long width, in long height,
- in unsigned long format, in unsigned long type, in ArrayBufferView? pixels) raises (DOMException);
- [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in unsigned long format, in unsigned long type, in ImageData? pixels) raises (DOMException);
- [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in unsigned long format, in unsigned long type, in HTMLImageElement? image) raises (DOMException);
- [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in unsigned long format, in unsigned long type, in HTMLCanvasElement? canvas) raises (DOMException);
+ [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in long width, in long height,
+ in unsigned long format, in unsigned long type, in ArrayBufferView? pixels) raises (DOMException);
+ [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in unsigned long format, in unsigned long type, in ImageData? pixels) raises (DOMException);
+ [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in unsigned long format, in unsigned long type, in HTMLImageElement? image) raises (DOMException);
+ [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in unsigned long format, in unsigned long type, in HTMLCanvasElement? canvas) raises (DOMException);
#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
- [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
- in unsigned long format, in unsigned long type, in HTMLVideoElement? video) raises (DOMException);
+ [StrictTypeChecking] void texSubImage2D(in unsigned long target, in long level, in long xoffset, in long yoffset,
+ in unsigned long format, in unsigned long type, in HTMLVideoElement? video) raises (DOMException);
#endif
- [StrictTypeChecking] void uniform1f(in WebGLUniformLocation location, in float x) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform1fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform1i(in WebGLUniformLocation location, in long x) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform1iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform2f(in WebGLUniformLocation location, in float x, in float y) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform2fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform2i(in WebGLUniformLocation location, in long x, in long y) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform2iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform3f(in WebGLUniformLocation location, in float x, in float y, in float z) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform3fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform3i(in WebGLUniformLocation location, in long x, in long y, in long z) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform3iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform4f(in WebGLUniformLocation location, in float x, in float y, in float z, in float w) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform4fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
- [StrictTypeChecking] void uniform4i(in WebGLUniformLocation location, in long x, in long y, in long z, in long w) raises(DOMException);
- [StrictTypeChecking, Custom] void uniform4iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
-
- [StrictTypeChecking, Custom] void uniformMatrix2fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
- [StrictTypeChecking, Custom] void uniformMatrix3fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
- [StrictTypeChecking, Custom] void uniformMatrix4fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
-
- [StrictTypeChecking] void useProgram(in WebGLProgram program) raises(DOMException);
- [StrictTypeChecking] void validateProgram(in WebGLProgram program) raises(DOMException);
-
- [StrictTypeChecking] void vertexAttrib1f(in unsigned long indx, in float x);
- [StrictTypeChecking, Custom] void vertexAttrib1fv(in unsigned long indx, in Float32Array values);
- [StrictTypeChecking] void vertexAttrib2f(in unsigned long indx, in float x, in float y);
- [StrictTypeChecking, Custom] void vertexAttrib2fv(in unsigned long indx, in Float32Array values);
- [StrictTypeChecking] void vertexAttrib3f(in unsigned long indx, in float x, in float y, in float z);
- [StrictTypeChecking, Custom] void vertexAttrib3fv(in unsigned long indx, in Float32Array values);
- [StrictTypeChecking] void vertexAttrib4f(in unsigned long indx, in float x, in float y, in float z, in float w);
- [StrictTypeChecking, Custom] void vertexAttrib4fv(in unsigned long indx, in Float32Array values);
- [StrictTypeChecking] void vertexAttribPointer(in unsigned long indx, in long size, in unsigned long type, in boolean normalized,
- in long stride, in long long offset) raises(DOMException);
-
- [StrictTypeChecking] void viewport(in long x, in long y, in long width, in long height);
- };
-}
-
+ [StrictTypeChecking] void uniform1f(in WebGLUniformLocation location, in float x) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform1fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform1i(in WebGLUniformLocation location, in long x) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform1iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform2f(in WebGLUniformLocation location, in float x, in float y) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform2fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform2i(in WebGLUniformLocation location, in long x, in long y) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform2iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform3f(in WebGLUniformLocation location, in float x, in float y, in float z) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform3fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform3i(in WebGLUniformLocation location, in long x, in long y, in long z) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform3iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform4f(in WebGLUniformLocation location, in float x, in float y, in float z, in float w) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform4fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
+ [StrictTypeChecking] void uniform4i(in WebGLUniformLocation location, in long x, in long y, in long z, in long w) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniform4iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
+
+ [StrictTypeChecking, Custom] void uniformMatrix2fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniformMatrix3fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
+ [StrictTypeChecking, Custom] void uniformMatrix4fv(in WebGLUniformLocation location, in boolean transpose, in Float32Array array) raises(DOMException);
+
+ [StrictTypeChecking] void useProgram(in WebGLProgram program) raises(DOMException);
+ [StrictTypeChecking] void validateProgram(in WebGLProgram program) raises(DOMException);
+
+ [StrictTypeChecking] void vertexAttrib1f(in unsigned long indx, in float x);
+ [StrictTypeChecking, Custom] void vertexAttrib1fv(in unsigned long indx, in Float32Array values);
+ [StrictTypeChecking] void vertexAttrib2f(in unsigned long indx, in float x, in float y);
+ [StrictTypeChecking, Custom] void vertexAttrib2fv(in unsigned long indx, in Float32Array values);
+ [StrictTypeChecking] void vertexAttrib3f(in unsigned long indx, in float x, in float y, in float z);
+ [StrictTypeChecking, Custom] void vertexAttrib3fv(in unsigned long indx, in Float32Array values);
+ [StrictTypeChecking] void vertexAttrib4f(in unsigned long indx, in float x, in float y, in float z, in float w);
+ [StrictTypeChecking, Custom] void vertexAttrib4fv(in unsigned long indx, in Float32Array values);
+ [StrictTypeChecking] void vertexAttribPointer(in unsigned long indx, in long size, in unsigned long type, in boolean normalized,
+ in long stride, in long long offset) raises(DOMException);
+
+ [StrictTypeChecking] void viewport(in long x, in long y, in long width, in long height);
+};
diff --git a/Source/WebCore/html/canvas/WebGLShader.idl b/Source/WebCore/html/canvas/WebGLShader.idl
index 2aeb704d6..0ebae3829 100644
--- a/Source/WebCore/html/canvas/WebGLShader.idl
+++ b/Source/WebCore/html/canvas/WebGLShader.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLShader {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLShader {
+};
diff --git a/Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl b/Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl
index 95294f942..a217fcb89 100644
--- a/Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl
+++ b/Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl
@@ -24,14 +24,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=WEBGL,
+] interface WebGLShaderPrecisionFormat {
+ readonly attribute long rangeMin;
+ readonly attribute long rangeMax;
+ readonly attribute long precision;
+};
- interface [
- Conditional=WEBGL,
- ] WebGLShaderPrecisionFormat {
- readonly attribute long rangeMin;
- readonly attribute long rangeMax;
- readonly attribute long precision;
- };
-
-}
diff --git a/Source/WebCore/html/canvas/WebGLTexture.idl b/Source/WebCore/html/canvas/WebGLTexture.idl
index 8e72dd34d..1ea2f2bca 100644
--- a/Source/WebCore/html/canvas/WebGLTexture.idl
+++ b/Source/WebCore/html/canvas/WebGLTexture.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLTexture {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLTexture {
+};
diff --git a/Source/WebCore/html/canvas/WebGLUniformLocation.idl b/Source/WebCore/html/canvas/WebGLUniformLocation.idl
index eb3167cd9..c211189de 100644
--- a/Source/WebCore/html/canvas/WebGLUniformLocation.idl
+++ b/Source/WebCore/html/canvas/WebGLUniformLocation.idl
@@ -24,9 +24,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLUniformLocation {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLUniformLocation {
+};
diff --git a/Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl b/Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl
index 0abbe0746..1e78ddd37 100644
--- a/Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl
+++ b/Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl
@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=WEBGL
- ] WebGLVertexArrayObjectOES {
- };
-}
+[
+ Conditional=WEBGL
+] interface WebGLVertexArrayObjectOES {
+};
diff --git a/Source/WebCore/html/parser/HTMLConstructionSite.cpp b/Source/WebCore/html/parser/HTMLConstructionSite.cpp
index 0d66be471..2ea904dea 100644
--- a/Source/WebCore/html/parser/HTMLConstructionSite.cpp
+++ b/Source/WebCore/html/parser/HTMLConstructionSite.cpp
@@ -368,7 +368,7 @@ void HTMLConstructionSite::insertTextNode(const String& characters, WhitespaceMo
// FIXME: We're only supposed to append to this text node if it
// was the last text node inserted by the parser.
CharacterData* textNode = static_cast<CharacterData*>(previousChild);
- currentPosition = textNode->parserAppendData(characters.characters(), characters.length(), Text::defaultLengthLimit);
+ currentPosition = textNode->parserAppendData(characters, 0, Text::defaultLengthLimit);
}
while (currentPosition < characters.length()) {
diff --git a/Source/WebCore/html/shadow/ContentDistributor.cpp b/Source/WebCore/html/shadow/ContentDistributor.cpp
index 076a723c8..40059c609 100644
--- a/Source/WebCore/html/shadow/ContentDistributor.cpp
+++ b/Source/WebCore/html/shadow/ContentDistributor.cpp
@@ -57,8 +57,21 @@ void ContentDistributor::distribute(Element* host)
m_validity = Valid;
ContentDistribution pool;
- for (Node* node = host->firstChild(); node; node = node->nextSibling())
- pool.append(node);
+ for (Node* node = host->firstChild(); node; node = node->nextSibling()) {
+ if (!isInsertionPoint(node)) {
+ pool.append(node);
+ continue;
+ }
+
+ InsertionPoint* insertionPoint = toInsertionPoint(node);
+ if (insertionPoint->hasDistribution()) {
+ for (size_t i = 0; i < insertionPoint->size(); ++i)
+ pool.append(insertionPoint->at(i));
+ } else {
+ for (Node* fallbackNode = insertionPoint->firstChild(); fallbackNode; fallbackNode = fallbackNode->nextSibling())
+ pool.append(fallbackNode);
+ }
+ }
Vector<bool> distributed(pool.size());
distributed.fill(false);
@@ -117,10 +130,10 @@ void ContentDistributor::distributeSelectionsTo(InsertionPoint* insertionPoint,
if (distributed[i])
continue;
- Node* child = pool[i].get();
- if (!query.matches(child))
+ if (!query.matches(pool, i))
continue;
+ Node* child = pool[i].get();
distribution.append(child);
m_nodeToInsertionPoint.add(child, insertionPoint);
distributed[i] = true;
diff --git a/Source/WebCore/html/shadow/ContentSelectorQuery.cpp b/Source/WebCore/html/shadow/ContentSelectorQuery.cpp
index f12c59925..0a6ec32ee 100644
--- a/Source/WebCore/html/shadow/ContentSelectorQuery.cpp
+++ b/Source/WebCore/html/shadow/ContentSelectorQuery.cpp
@@ -30,16 +30,45 @@
#include "CSSParser.h"
#include "CSSSelectorList.h"
#include "InsertionPoint.h"
+#include "SelectorChecker.h"
#include "ShadowRoot.h"
+#include "SiblingTraversalStrategies.h"
namespace WebCore {
+ContentSelectorChecker::ContentSelectorChecker(Document* document, bool strictParsing)
+ : m_selectorChecker(document, strictParsing)
+{
+ m_selectorChecker.setMode(SelectorChecker::CollectingRules);
+}
+
+bool ContentSelectorChecker::checkContentSelector(CSSSelector* selector, const Vector<RefPtr<Node> >& siblings, int nth) const
+{
+ SelectorChecker::SelectorCheckingContext context(selector, toElement(siblings[nth].get()), SelectorChecker::VisitedMatchEnabled);
+ ShadowDOMSiblingTraversalStrategy strategy(siblings, nth);
+ return m_selectorChecker.checkOneSelector(context, strategy);
+}
+
+void ContentSelectorDataList::initialize(const CSSSelectorList& selectors)
+{
+ for (CSSSelector* selector = selectors.first(); selector; selector = CSSSelectorList::next(selector))
+ m_selectors.append(selector);
+}
+
+bool ContentSelectorDataList::matches(const ContentSelectorChecker& selectorChecker, const Vector<RefPtr<Node> >& siblings, int nth) const
+{
+ unsigned selectorCount = m_selectors.size();
+ for (unsigned i = 0; i < selectorCount; ++i) {
+ if (selectorChecker.checkContentSelector(m_selectors[i], siblings, nth))
+ return true;
+ }
+ return false;
+}
+
ContentSelectorQuery::ContentSelectorQuery(const InsertionPoint* insertionPoint)
: m_insertionPoint(insertionPoint)
, m_selectorChecker(insertionPoint->document(), !insertionPoint->document()->inQuirksMode())
{
- m_selectorChecker.setMode(SelectorChecker::CollectingRules);
-
if (insertionPoint->select().isNull() || insertionPoint->select().isEmpty()) {
m_isValidSelector = true;
return;
@@ -58,13 +87,10 @@ bool ContentSelectorQuery::isValidSelector() const
return m_isValidSelector;
}
-bool ContentSelectorQuery::matches(Node* node) const
+bool ContentSelectorQuery::matches(const Vector<RefPtr<Node> >& siblings, int nth) const
{
+ Node* node = siblings[nth].get();
ASSERT(node);
- if (!node)
- return false;
-
- ASSERT(node->parentNode() == m_insertionPoint->shadowRoot()->host());
if (m_insertionPoint->select().isNull() || m_insertionPoint->select().isEmpty())
return true;
@@ -75,7 +101,7 @@ bool ContentSelectorQuery::matches(Node* node) const
if (!node->isElementNode())
return false;
- return m_selectors.matches(m_selectorChecker, toElement(node));
+ return m_selectors.matches(m_selectorChecker, siblings, nth);
}
static bool validateSubSelector(CSSSelector* selector)
diff --git a/Source/WebCore/html/shadow/ContentSelectorQuery.h b/Source/WebCore/html/shadow/ContentSelectorQuery.h
index 94fa3efcc..2c710a585 100644
--- a/Source/WebCore/html/shadow/ContentSelectorQuery.h
+++ b/Source/WebCore/html/shadow/ContentSelectorQuery.h
@@ -43,25 +43,41 @@ class Document;
class Node;
class InsertionPoint;
+class ContentSelectorChecker {
+public:
+ ContentSelectorChecker(Document*, bool strictParsing);
+
+ bool checkContentSelector(CSSSelector*, const Vector<RefPtr<Node> >& siblings, int nthNode) const;
+private:
+ SelectorChecker m_selectorChecker;
+};
+
+class ContentSelectorDataList {
+public:
+ void initialize(const CSSSelectorList&);
+ bool matches(const ContentSelectorChecker&, const Vector<RefPtr<Node> >& siblings, int nthNode) const;
+
+private:
+ Vector<CSSSelector*> m_selectors;
+};
+
class ContentSelectorQuery {
WTF_MAKE_NONCOPYABLE(ContentSelectorQuery);
public:
explicit ContentSelectorQuery(const InsertionPoint*);
bool isValidSelector() const;
- bool matches(Node*) const;
+ bool matches(const Vector<RefPtr<Node> >& siblings, int nthNode) const;
private:
bool validateSelectorList();
const InsertionPoint* m_insertionPoint;
- SelectorDataList m_selectors;
+ ContentSelectorDataList m_selectors;
CSSSelectorList m_selectorList;
- SelectorChecker m_selectorChecker;
+ ContentSelectorChecker m_selectorChecker;
bool m_isValidSelector;
};
}
-
-
#endif
diff --git a/Source/WebCore/html/shadow/DateTimeEditElement.cpp b/Source/WebCore/html/shadow/DateTimeEditElement.cpp
index 9a0d932bb..047ee3584 100644
--- a/Source/WebCore/html/shadow/DateTimeEditElement.cpp
+++ b/Source/WebCore/html/shadow/DateTimeEditElement.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeEditElement.h"
#include "DateComponents.h"
@@ -49,6 +49,7 @@ class DateTimeEditBuilder : private DateTimeFormat::TokenHandler {
WTF_MAKE_NONCOPYABLE(DateTimeEditBuilder);
public:
+ // The argument objects must be alive until this object dies.
DateTimeEditBuilder(DateTimeEditElement&, const DateTimeEditElement::LayoutParameters&, const DateComponents&);
bool build(const String&);
@@ -58,22 +59,21 @@ private:
bool shouldMillisecondFieldReadOnly() const;
bool shouldMinuteFieldReadOnly() const;
bool shouldSecondFieldReadOnly() const;
+ inline const StepRange& stepRange() const { return m_parameters.stepRange; }
// DateTimeFormat::TokenHandler functions.
virtual void visitField(DateTimeFormat::FieldType, int) OVERRIDE FINAL;
virtual void visitLiteral(const String&) OVERRIDE FINAL;
DateTimeEditElement& m_editElement;
- const DateComponents& m_dateValue;
- const StepRange& m_stepRange;
- Localizer& m_localizer;
+ const DateComponents m_dateValue;
+ const DateTimeEditElement::LayoutParameters& m_parameters;
};
DateTimeEditBuilder::DateTimeEditBuilder(DateTimeEditElement& elemnt, const DateTimeEditElement::LayoutParameters& layoutParameters, const DateComponents& dateValue)
: m_editElement(elemnt)
, m_dateValue(dateValue)
- , m_stepRange(layoutParameters.stepRange)
- , m_localizer(layoutParameters.localizer)
+ , m_parameters(layoutParameters)
{
}
@@ -86,8 +86,8 @@ bool DateTimeEditBuilder::build(const String& formatString)
bool DateTimeEditBuilder::needMillisecondField() const
{
return m_dateValue.millisecond()
- || !m_stepRange.minimum().remainder(static_cast<int>(msPerSecond)).isZero()
- || !m_stepRange.step().remainder(static_cast<int>(msPerSecond)).isZero();
+ || !stepRange().minimum().remainder(static_cast<int>(msPerSecond)).isZero()
+ || !stepRange().step().remainder(static_cast<int>(msPerSecond)).isZero();
}
void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
@@ -95,6 +95,10 @@ void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
Document* const document = m_editElement.document();
switch (fieldType) {
+ case DateTimeFormat::FieldTypeDayOfMonth:
+ m_editElement.addField(DateTimeDayFieldElement::create(document, m_editElement, m_parameters.placeholderForDay));
+ return;
+
case DateTimeFormat::FieldTypeHour11:
m_editElement.addField(DateTimeHourFieldElement::create(document, m_editElement, 0, 11));
return;
@@ -119,8 +123,13 @@ void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
return;
}
+ case DateTimeFormat::FieldTypeMonth:
+ // We always use "MM", two digits month, even if "M", "MMM", "MMMM", or "MMMMM".
+ m_editElement.addField(DateTimeMonthFieldElement::create(document, m_editElement, m_parameters.placeholderForMonth));
+ return;
+
case DateTimeFormat::FieldTypePeriod:
- m_editElement.addField(DateTimeAMPMFieldElement::create(document, m_editElement, m_localizer.timeAMPMLabels()));
+ m_editElement.addField(DateTimeAMPMFieldElement::create(document, m_editElement, m_parameters.localizer.timeAMPMLabels()));
return;
case DateTimeFormat::FieldTypeSecond: {
@@ -130,7 +139,7 @@ void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
field->setReadOnly();
if (needMillisecondField()) {
- visitLiteral(m_localizer.localizedDecimalSeparator());
+ visitLiteral(m_parameters.localizer.localizedDecimalSeparator());
visitField(DateTimeFormat::FieldTypeFractionalSecond, 3);
}
return;
@@ -144,6 +153,35 @@ void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
return;
}
+ case DateTimeFormat::FieldTypeWeekOfYear:
+ m_editElement.addField(DateTimeWeekFieldElement::create(document, m_editElement));
+ return;
+
+ case DateTimeFormat::FieldTypeYear: {
+ DateTimeYearFieldElement::Parameters yearParams;
+ if (m_parameters.minimumYear == m_parameters.undefinedYear()) {
+ yearParams.minimumYear = DateComponents::minimumYear();
+ yearParams.minIsSpecified = false;
+ } else {
+ yearParams.minimumYear = m_parameters.minimumYear;
+ yearParams.minIsSpecified = true;
+ }
+ if (m_parameters.maximumYear == m_parameters.undefinedYear()) {
+ yearParams.maximumYear = DateComponents::maximumYear();
+ yearParams.maxIsSpecified = false;
+ } else {
+ yearParams.maximumYear = m_parameters.maximumYear;
+ yearParams.maxIsSpecified = true;
+ }
+ if (yearParams.minimumYear > yearParams.maximumYear) {
+ std::swap(yearParams.minimumYear, yearParams.maximumYear);
+ std::swap(yearParams.minIsSpecified, yearParams.maxIsSpecified);
+ }
+ yearParams.placeholder = m_parameters.placeholderForYear;
+ m_editElement.addField(DateTimeYearFieldElement::create(document, m_editElement, yearParams));
+ return;
+ }
+
default:
return;
}
@@ -151,17 +189,17 @@ void DateTimeEditBuilder::visitField(DateTimeFormat::FieldType fieldType, int)
bool DateTimeEditBuilder::shouldMillisecondFieldReadOnly() const
{
- return !m_dateValue.millisecond() && m_stepRange.step().remainder(static_cast<int>(msPerSecond)).isZero();
+ return !m_dateValue.millisecond() && stepRange().step().remainder(static_cast<int>(msPerSecond)).isZero();
}
bool DateTimeEditBuilder::shouldMinuteFieldReadOnly() const
{
- return !m_dateValue.minute() && m_stepRange.step().remainder(static_cast<int>(msPerHour)).isZero();
+ return !m_dateValue.minute() && stepRange().step().remainder(static_cast<int>(msPerHour)).isZero();
}
bool DateTimeEditBuilder::shouldSecondFieldReadOnly() const
{
- return !m_dateValue.second() && m_stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero();
+ return !m_dateValue.second() && stepRange().step().remainder(static_cast<int>(msPerMinute)).isZero();
}
void DateTimeEditBuilder::visitLiteral(const String& text)
@@ -172,15 +210,6 @@ void DateTimeEditBuilder::visitLiteral(const String& text)
// ----------------------------
-
-bool DateTimeEditElement::LayoutParameters::shouldHaveSecondField() const
-{
- return !stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero()
- || !stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero();
-}
-
-// ----------------------------
-
DateTimeEditElement::EditControlOwner::~EditControlOwner()
{
}
@@ -325,6 +354,11 @@ bool DateTimeEditElement::isDisabled() const
return m_editControlOwner && m_editControlOwner->isEditControlOwnerDisabled();
}
+bool DateTimeEditElement::isFieldOwnerDisabledOrReadOnly() const
+{
+ return isDisabled() || isReadOnly();
+}
+
bool DateTimeEditElement::isReadOnly() const
{
return m_editControlOwner && m_editControlOwner->isEditControlOwnerReadOnly();
@@ -367,6 +401,11 @@ void DateTimeEditElement::layout(const LayoutParameters& layoutParameters, const
appendChild(spinButton);
}
+AtomicString DateTimeEditElement::localeIdentifier() const
+{
+ return m_editControlOwner ? m_editControlOwner->localeIdentifier() : nullAtom;
+}
+
void DateTimeEditElement::readOnlyStateChanged()
{
updateUIState();
diff --git a/Source/WebCore/html/shadow/DateTimeEditElement.h b/Source/WebCore/html/shadow/DateTimeEditElement.h
index 84cf229c6..f039e9954 100644
--- a/Source/WebCore/html/shadow/DateTimeEditElement.h
+++ b/Source/WebCore/html/shadow/DateTimeEditElement.h
@@ -26,7 +26,7 @@
#ifndef DateTimeEditElement_h
#define DateTimeEditElement_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldElement.h"
#include "SpinButtonElement.h"
#include "StepRange.h"
@@ -58,21 +58,29 @@ public:
virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const = 0;
virtual bool isEditControlOwnerDisabled() const = 0;
virtual bool isEditControlOwnerReadOnly() const = 0;
+ virtual AtomicString localeIdentifier() const = 0;
};
struct LayoutParameters {
String dateTimeFormat;
String fallbackDateTimeFormat;
Localizer& localizer;
- const StepRange& stepRange;
+ const StepRange stepRange;
+ int minimumYear;
+ int maximumYear;
+ String placeholderForDay;
+ String placeholderForMonth;
+ String placeholderForYear;
LayoutParameters(Localizer& localizer, const StepRange& stepRange)
: localizer(localizer)
, stepRange(stepRange)
+ , minimumYear(undefinedYear())
+ , maximumYear(undefinedYear())
{
}
- bool shouldHaveSecondField() const;
+ static inline int undefinedYear() { return -1; }
};
static PassRefPtr<DateTimeEditElement> create(Document*, EditControlOwner&);
@@ -123,6 +131,8 @@ private:
virtual void fieldValueChanged() OVERRIDE FINAL;
virtual bool focusOnNextField(const DateTimeFieldElement&) OVERRIDE FINAL;
virtual bool focusOnPreviousField(const DateTimeFieldElement&) OVERRIDE FINAL;
+ virtual bool isFieldOwnerDisabledOrReadOnly() const OVERRIDE FINAL;
+ virtual AtomicString localeIdentifier() const OVERRIDE FINAL;
// SpinButtonElement::SpinButtonOwner functions.
virtual void focusAndSelectSpinButtonOwner() OVERRIDE FINAL;
diff --git a/Source/WebCore/html/shadow/DateTimeFieldElement.cpp b/Source/WebCore/html/shadow/DateTimeFieldElement.cpp
index a0ec51e59..6512ac1cb 100644
--- a/Source/WebCore/html/shadow/DateTimeFieldElement.cpp
+++ b/Source/WebCore/html/shadow/DateTimeFieldElement.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldElement.h"
#include "DateComponents.h"
@@ -80,6 +80,8 @@ void DateTimeFieldElement::defaultKeyboardEventHandler(KeyboardEvent* keyboardEv
const String& keyIdentifier = keyboardEvent->keyIdentifier();
if (keyIdentifier == "Down") {
+ if (keyboardEvent->getModifierState("Alt"))
+ return;
keyboardEvent->setDefaultHandled();
stepDown();
return;
@@ -144,7 +146,11 @@ void DateTimeFieldElement::initialize(const AtomicString& shadowPseudoId, const
bool DateTimeFieldElement::isFocusable() const
{
- return !isReadOnly();
+ if (isReadOnly())
+ return false;
+ if (m_fieldOwner && m_fieldOwner->isFieldOwnerDisabledOrReadOnly())
+ return false;
+ return HTMLElement::isFocusable();
}
bool DateTimeFieldElement::isReadOnly() const
@@ -157,6 +163,11 @@ bool DateTimeFieldElement::isRTL() const
return renderer() && renderer()->style()->direction() == RTL;
}
+AtomicString DateTimeFieldElement::localeIdentifier() const
+{
+ return m_fieldOwner ? m_fieldOwner->localeIdentifier() : nullAtom;
+}
+
void DateTimeFieldElement::setReadOnly()
{
// Set HTML attribute readonly to change apperance.
diff --git a/Source/WebCore/html/shadow/DateTimeFieldElement.h b/Source/WebCore/html/shadow/DateTimeFieldElement.h
index f5c9810a1..c926cbe11 100644
--- a/Source/WebCore/html/shadow/DateTimeFieldElement.h
+++ b/Source/WebCore/html/shadow/DateTimeFieldElement.h
@@ -26,7 +26,7 @@
#ifndef DateTimeFieldElement_h
#define DateTimeFieldElement_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "HTMLDivElement.h"
@@ -55,6 +55,8 @@ public:
virtual void fieldValueChanged() = 0;
virtual bool focusOnNextField(const DateTimeFieldElement&) = 0;
virtual bool focusOnPreviousField(const DateTimeFieldElement&) = 0;
+ virtual bool isFieldOwnerDisabledOrReadOnly() const = 0;
+ virtual AtomicString localeIdentifier() const = 0;
};
virtual void defaultEventHandler(Event*) OVERRIDE;
@@ -80,6 +82,7 @@ protected:
void focusOnNextField();
virtual void handleKeyboardEvent(KeyboardEvent*) = 0;
void initialize(const AtomicString& shadowPseudoId, const String& axHelpText);
+ AtomicString localeIdentifier() const;
virtual int maximum() const = 0;
virtual int minimum() const = 0;
void updateVisibleValue(EventBehavior);
diff --git a/Source/WebCore/html/shadow/DateTimeFieldElements.cpp b/Source/WebCore/html/shadow/DateTimeFieldElements.cpp
index c2f458a21..adcc7227a 100644
--- a/Source/WebCore/html/shadow/DateTimeFieldElements.cpp
+++ b/Source/WebCore/html/shadow/DateTimeFieldElements.cpp
@@ -24,12 +24,14 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldElements.h"
#include "DateComponents.h"
#include "DateTimeFieldsState.h"
#include "LocalizedStrings.h"
+#include <wtf/CurrentTime.h>
+#include <wtf/DateMath.h>
namespace WebCore {
@@ -69,8 +71,49 @@ void DateTimeAMPMFieldElement::setValueAsDateTimeFieldsState(const DateTimeField
// ----------------------------
+DateTimeDayFieldElement::DateTimeDayFieldElement(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+ : DateTimeNumericFieldElement(document, fieldOwner, 1, 31, placeholder)
+{
+}
+
+PassRefPtr<DateTimeDayFieldElement> DateTimeDayFieldElement::create(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+{
+ DEFINE_STATIC_LOCAL(AtomicString, dayPsuedoId, ("-webkit-datetime-edit-day-field"));
+ RefPtr<DateTimeDayFieldElement> field = adoptRef(new DateTimeDayFieldElement(document, fieldOwner, placeholder.isEmpty() ? ASCIILiteral("--") : placeholder));
+ field->initialize(dayPsuedoId, AXDayOfMonthFieldText());
+ return field.release();
+}
+
+void DateTimeDayFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& dateTimeFieldsState)
+{
+ dateTimeFieldsState.setDayOfMonth(hasValue() ? valueAsInteger() : DateTimeFieldsState::emptyValue);
+}
+
+void DateTimeDayFieldElement::setValueAsDate(const DateComponents& date)
+{
+ setValueAsInteger(date.monthDay());
+}
+
+void DateTimeDayFieldElement::setValueAsDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState, const DateComponents& dateForReadOnlyField)
+{
+ if (!dateTimeFieldsState.hasDayOfMonth()) {
+ setEmptyValue(dateForReadOnlyField);
+ return;
+ }
+
+ const unsigned value = dateTimeFieldsState.dayOfMonth();
+ if (range().isInRange(static_cast<int>(value))) {
+ setValueAsInteger(value);
+ return;
+ }
+
+ setEmptyValue(dateForReadOnlyField);
+}
+
+// ----------------------------
+
DateTimeHourFieldElement::DateTimeHourFieldElement(Document* document, FieldOwner& fieldOwner, int minimum, int maximum)
- : DateTimeNumericFieldElement(document, fieldOwner, minimum, maximum)
+ : DateTimeNumericFieldElement(document, fieldOwner, minimum, maximum, "--")
, m_alignment(maximum + maximum % 2)
{
ASSERT((!minimum && (maximum == 11 || maximum == 23)) || (minimum == 1 && (maximum == 12 || maximum == 24)));
@@ -175,7 +218,7 @@ int DateTimeHourFieldElement::valueAsInteger() const
// ----------------------------
DateTimeMillisecondFieldElement::DateTimeMillisecondFieldElement(Document* document, FieldOwner& fieldOwner)
- : DateTimeNumericFieldElement(document, fieldOwner, 0, 999)
+ : DateTimeNumericFieldElement(document, fieldOwner, 0, 999, "---")
{
}
@@ -216,7 +259,7 @@ void DateTimeMillisecondFieldElement::setValueAsDateTimeFieldsState(const DateTi
// ----------------------------
DateTimeMinuteFieldElement::DateTimeMinuteFieldElement(Document* document, FieldOwner& fieldOwner)
- : DateTimeNumericFieldElement(document, fieldOwner, 0, 59)
+ : DateTimeNumericFieldElement(document, fieldOwner, 0, 59, "--")
{
}
@@ -256,8 +299,49 @@ void DateTimeMinuteFieldElement::setValueAsDateTimeFieldsState(const DateTimeFie
// ----------------------------
+DateTimeMonthFieldElement::DateTimeMonthFieldElement(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+ : DateTimeNumericFieldElement(document, fieldOwner, 1, 12, placeholder)
+{
+}
+
+PassRefPtr<DateTimeMonthFieldElement> DateTimeMonthFieldElement::create(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+{
+ DEFINE_STATIC_LOCAL(AtomicString, monthPsuedoId, ("-webkit-datetime-edit-month-field"));
+ RefPtr<DateTimeMonthFieldElement> field = adoptRef(new DateTimeMonthFieldElement(document, fieldOwner, placeholder.isEmpty() ? ASCIILiteral("--") : placeholder));
+ field->initialize(monthPsuedoId, AXMonthFieldText());
+ return field.release();
+}
+
+void DateTimeMonthFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& dateTimeFieldsState)
+{
+ dateTimeFieldsState.setMonth(hasValue() ? valueAsInteger() : DateTimeFieldsState::emptyValue);
+}
+
+void DateTimeMonthFieldElement::setValueAsDate(const DateComponents& date)
+{
+ setValueAsInteger(date.month() + 1);
+}
+
+void DateTimeMonthFieldElement::setValueAsDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState, const DateComponents& dateForReadOnlyField)
+{
+ if (!dateTimeFieldsState.hasMonth()) {
+ setEmptyValue(dateForReadOnlyField);
+ return;
+ }
+
+ const unsigned value = dateTimeFieldsState.month();
+ if (range().isInRange(static_cast<int>(value))) {
+ setValueAsInteger(value);
+ return;
+ }
+
+ setEmptyValue(dateForReadOnlyField);
+}
+
+// ----------------------------
+
DateTimeSecondFieldElement::DateTimeSecondFieldElement(Document* document, FieldOwner& fieldOwner)
- : DateTimeNumericFieldElement(document, fieldOwner, 0, 59)
+ : DateTimeNumericFieldElement(document, fieldOwner, 0, 59, "--")
{
}
@@ -295,6 +379,120 @@ void DateTimeSecondFieldElement::setValueAsDateTimeFieldsState(const DateTimeFie
setValueAsInteger(value);
}
+// ----------------------------
+
+DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document* document, FieldOwner& fieldOwner)
+ : DateTimeNumericFieldElement(document, fieldOwner, DateComponents::minimumWeekNumber, DateComponents::maximumWeekNumber, "--")
+{
+}
+
+PassRefPtr<DateTimeWeekFieldElement> DateTimeWeekFieldElement::create(Document* document, FieldOwner& fieldOwner)
+{
+ DEFINE_STATIC_LOCAL(AtomicString, weekPsuedoId, ("-webkit-datetime-edit-week-field"));
+ RefPtr<DateTimeWeekFieldElement> field = adoptRef(new DateTimeWeekFieldElement(document, fieldOwner));
+ field->initialize(weekPsuedoId, AXWeekOfYearFieldText());
+ return field.release();
+}
+
+void DateTimeWeekFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& dateTimeFieldsState)
+{
+ dateTimeFieldsState.setWeekOfYear(hasValue() ? valueAsInteger() : DateTimeFieldsState::emptyValue);
+}
+
+void DateTimeWeekFieldElement::setValueAsDate(const DateComponents& date)
+{
+ setValueAsInteger(date.week());
+}
+
+void DateTimeWeekFieldElement::setValueAsDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState, const DateComponents& dateForReadOnlyField)
+{
+ if (!dateTimeFieldsState.hasWeekOfYear()) {
+ setEmptyValue(dateForReadOnlyField);
+ return;
+ }
+
+ const unsigned value = dateTimeFieldsState.weekOfYear();
+ if (range().isInRange(static_cast<int>(value))) {
+ setValueAsInteger(value);
+ return;
+ }
+
+ setEmptyValue(dateForReadOnlyField);
+}
+
+// ----------------------------
+
+DateTimeYearFieldElement::DateTimeYearFieldElement(Document* document, FieldOwner& fieldOwner, const DateTimeYearFieldElement::Parameters& parameters)
+ : DateTimeNumericFieldElement(document, fieldOwner, parameters.minimumYear, parameters.maximumYear, parameters.placeholder.isEmpty() ? ASCIILiteral("----") : parameters.placeholder)
+ , m_minIsSpecified(parameters.minIsSpecified)
+ , m_maxIsSpecified(parameters.maxIsSpecified)
+{
+ ASSERT(parameters.minimumYear >= DateComponents::minimumYear());
+ ASSERT(parameters.maximumYear <= DateComponents::maximumYear());
+}
+
+PassRefPtr<DateTimeYearFieldElement> DateTimeYearFieldElement::create(Document* document, FieldOwner& fieldOwner, const DateTimeYearFieldElement::Parameters& parameters)
+{
+ DEFINE_STATIC_LOCAL(AtomicString, yearPsuedoId, ("-webkit-datetime-edit-year-field"));
+ RefPtr<DateTimeYearFieldElement> field = adoptRef(new DateTimeYearFieldElement(document, fieldOwner, parameters));
+ field->initialize(yearPsuedoId, AXYearFieldText());
+ return field.release();
+}
+
+int DateTimeYearFieldElement::clampValueForHardLimits(int value) const
+{
+ return Range(DateComponents::minimumYear(), DateComponents::maximumYear()).clampValue(value);
+}
+
+static int currentFullYear()
+{
+ double current = currentTimeMS();
+ double utcOffset = calculateUTCOffset();
+ double dstOffset = calculateDSTOffset(current, utcOffset);
+ int offset = static_cast<int>((utcOffset + dstOffset) / msPerMinute);
+ current += offset * msPerMinute;
+
+ DateComponents date;
+ date.setMillisecondsSinceEpochForMonth(current);
+ return date.fullYear();
+}
+
+int DateTimeYearFieldElement::defaultValueForStepDown() const
+{
+ return m_maxIsSpecified ? DateTimeNumericFieldElement::defaultValueForStepDown() : currentFullYear();
+}
+
+int DateTimeYearFieldElement::defaultValueForStepUp() const
+{
+ return m_minIsSpecified ? DateTimeNumericFieldElement::defaultValueForStepUp() : currentFullYear();
+}
+
+void DateTimeYearFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& dateTimeFieldsState)
+{
+ dateTimeFieldsState.setYear(hasValue() ? valueAsInteger() : DateTimeFieldsState::emptyValue);
+}
+
+void DateTimeYearFieldElement::setValueAsDate(const DateComponents& date)
+{
+ setValueAsInteger(date.fullYear());
+}
+
+void DateTimeYearFieldElement::setValueAsDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState, const DateComponents& dateForReadOnlyField)
+{
+ if (!dateTimeFieldsState.hasYear()) {
+ setEmptyValue(dateForReadOnlyField);
+ return;
+ }
+
+ const unsigned value = dateTimeFieldsState.year();
+ if (range().isInRange(static_cast<int>(value))) {
+ setValueAsInteger(value);
+ return;
+ }
+
+ setEmptyValue(dateForReadOnlyField);
+}
+
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/shadow/DateTimeFieldElements.h b/Source/WebCore/html/shadow/DateTimeFieldElements.h
index 23f3403ea..46d51a786 100644
--- a/Source/WebCore/html/shadow/DateTimeFieldElements.h
+++ b/Source/WebCore/html/shadow/DateTimeFieldElements.h
@@ -26,7 +26,7 @@
#ifndef DateTimeFieldElements_h
#define DateTimeFieldElements_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeNumericFieldElement.h"
#include "DateTimeSymbolicFieldElement.h"
@@ -47,6 +47,20 @@ private:
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
};
+class DateTimeDayFieldElement : public DateTimeNumericFieldElement {
+ WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
+
+public:
+ static PassRefPtr<DateTimeDayFieldElement> create(Document*, FieldOwner&, const String& placeholder);
+
+private:
+ DateTimeDayFieldElement(Document*, FieldOwner&, const String& placeholder);
+
+ // DateTimeFieldElement functions.
+ virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
+ virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
+ virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
+};
// DateTimeHourFieldElement is used for hour field of date time format
// supporting following patterns:
@@ -103,6 +117,21 @@ private:
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
};
+class DateTimeMonthFieldElement : public DateTimeNumericFieldElement {
+ WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
+
+public:
+ static PassRefPtr<DateTimeMonthFieldElement> create(Document*, FieldOwner&, const String& placeholder);
+
+private:
+ DateTimeMonthFieldElement(Document*, FieldOwner&, const String& placeholder);
+
+ // DateTimeFieldElement functions.
+ virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
+ virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
+ virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
+};
+
class DateTimeSecondFieldElement : public DateTimeNumericFieldElement {
WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
@@ -118,6 +147,60 @@ private:
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
};
+class DateTimeWeekFieldElement : public DateTimeNumericFieldElement {
+ WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
+
+public:
+ static PassRefPtr<DateTimeWeekFieldElement> create(Document*, FieldOwner&);
+
+private:
+ DateTimeWeekFieldElement(Document*, FieldOwner&);
+
+ // DateTimeFieldElement functions.
+ virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
+ virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
+ virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
+};
+
+class DateTimeYearFieldElement : public DateTimeNumericFieldElement {
+ WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
+
+public:
+ struct Parameters {
+ int minimumYear;
+ int maximumYear;
+ bool minIsSpecified;
+ bool maxIsSpecified;
+ String placeholder;
+
+ Parameters()
+ : minimumYear(-1)
+ , maximumYear(-1)
+ , minIsSpecified(false)
+ , maxIsSpecified(false)
+ {
+ }
+ };
+
+ static PassRefPtr<DateTimeYearFieldElement> create(Document*, FieldOwner&, const Parameters&);
+
+private:
+ DateTimeYearFieldElement(Document*, FieldOwner&, const Parameters&);
+
+ // DateTimeFieldElement functions.
+ virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
+ virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
+ virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
+
+ // DateTimeNumericFieldElement functions.
+ virtual int clampValueForHardLimits(int) const OVERRIDE FINAL;
+ virtual int defaultValueForStepDown() const OVERRIDE FINAL;
+ virtual int defaultValueForStepUp() const OVERRIDE FINAL;
+
+ bool m_minIsSpecified;
+ bool m_maxIsSpecified;
+};
+
} // namespace WebCore
#endif
diff --git a/Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp b/Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp
index cf8a4a338..ffb03979d 100644
--- a/Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp
+++ b/Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp
@@ -24,33 +24,21 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeNumericFieldElement.h"
+#include "FontCache.h"
#include "KeyboardEvent.h"
-#include "LocalizedNumber.h"
+#include "Localizer.h"
+#include "RenderStyle.h"
+#include "StyleResolver.h"
+#include "TextRun.h"
#include <wtf/text/StringBuilder.h>
namespace WebCore {
static const DOMTimeStamp typeAheadTimeout = 1000;
-static size_t displaySizeOfNumber(int value)
-{
- ASSERT(value >= 0);
-
- if (!value)
- return 1;
-
- int numberOfDigits = 0;
- while (value) {
- value /= 10;
- ++numberOfDigits;
- }
-
- return numberOfDigits;
-}
-
DateTimeNumericFieldElement::Range::Range(int minimum, int maximum)
: maximum(maximum)
, minimum(minimum)
@@ -63,13 +51,49 @@ int DateTimeNumericFieldElement::Range::clampValue(int value) const
return std::min(std::max(value, minimum), maximum);
}
-DateTimeNumericFieldElement::DateTimeNumericFieldElement(Document* document, FieldOwner& fieldOwner, int minimum, int maximum)
+bool DateTimeNumericFieldElement::Range::isInRange(int value) const
+{
+ return value >= minimum && value <= maximum;
+}
+
+// ----------------------------
+
+DateTimeNumericFieldElement::DateTimeNumericFieldElement(Document* document, FieldOwner& fieldOwner, int minimum, int maximum, const String& placeholder)
: DateTimeFieldElement(document, fieldOwner)
, m_lastDigitCharTime(0)
+ , m_placeholder(placeholder)
, m_range(minimum, maximum)
, m_value(0)
, m_hasValue(false)
{
+ setHasCustomCallbacks();
+}
+
+int DateTimeNumericFieldElement::clampValueForHardLimits(int value) const
+{
+ return clampValue(value);
+}
+
+PassRefPtr<RenderStyle> DateTimeNumericFieldElement::customStyleForRenderer()
+{
+ FontCachePurgePreventer fontCachePurgePreventer;
+ RefPtr<RenderStyle> originalStyle = document()->styleResolver()->styleForElement(this);
+ RefPtr<RenderStyle> style = RenderStyle::clone(originalStyle.get());
+ float maxiumWidth = style->font().width(m_placeholder);
+ maxiumWidth = std::max(maxiumWidth, style->font().width(formatValue(maximum())));
+ maxiumWidth = std::max(maxiumWidth, style->font().width(value()));
+ style->setWidth(Length(maxiumWidth, Fixed));
+ return style.release();
+}
+
+int DateTimeNumericFieldElement::defaultValueForStepDown() const
+{
+ return m_range.maximum;
+}
+
+int DateTimeNumericFieldElement::defaultValueForStepUp() const
+{
+ return m_range.minimum;
}
void DateTimeNumericFieldElement::didBlur()
@@ -78,6 +102,16 @@ void DateTimeNumericFieldElement::didBlur()
DateTimeFieldElement::didBlur();
}
+String DateTimeNumericFieldElement::formatValue(int value) const
+{
+ Localizer& localizer = localizerForOwner();
+ if (m_range.maximum > 999)
+ return localizer.convertToLocalizedNumber(String::format("%04d", value));
+ if (m_range.maximum > 99)
+ return localizer.convertToLocalizedNumber(String::format("%03d", value));
+ return localizer.convertToLocalizedNumber(String::format("%02d", value));
+}
+
void DateTimeNumericFieldElement::handleKeyboardEvent(KeyboardEvent* keyboardEvent)
{
if (isReadOnly())
@@ -93,7 +127,7 @@ void DateTimeNumericFieldElement::handleKeyboardEvent(KeyboardEvent* keyboardEve
DOMTimeStamp delta = keyboardEvent->timeStamp() - m_lastDigitCharTime;
m_lastDigitCharTime = 0;
- String number = convertFromLocalizedNumber(String(&charCode, 1));
+ String number = localizerForOwner().convertFromLocalizedNumber(String(&charCode, 1));
const int digit = number[0] - '0';
if (digit < 0 || digit > 9)
return;
@@ -111,6 +145,11 @@ bool DateTimeNumericFieldElement::hasValue() const
return m_hasValue;
}
+Localizer& DateTimeNumericFieldElement::localizerForOwner() const
+{
+ return document()->getCachedLocalizer(localeIdentifier());
+}
+
int DateTimeNumericFieldElement::maximum() const
{
return m_range.maximum;
@@ -137,7 +176,7 @@ void DateTimeNumericFieldElement::setEmptyValue(const DateComponents& dateForRea
void DateTimeNumericFieldElement::setValueAsInteger(int value, EventBehavior eventBehavior)
{
- m_value = clampValue(value);
+ m_value = clampValueForHardLimits(value);
m_hasValue = true;
updateVisibleValue(eventBehavior);
m_lastDigitCharTime = 0;
@@ -148,7 +187,7 @@ void DateTimeNumericFieldElement::stepDown()
if (m_hasValue)
setValueAsInteger(m_value == m_range.minimum ? m_range.maximum : clampValue(m_value - 1), DispatchEvent);
else
- setValueAsInteger(m_range.maximum, DispatchEvent);
+ setValueAsInteger(defaultValueForStepDown(), DispatchEvent);
}
void DateTimeNumericFieldElement::stepUp()
@@ -156,21 +195,12 @@ void DateTimeNumericFieldElement::stepUp()
if (m_hasValue)
setValueAsInteger(m_value == m_range.maximum ? m_range.minimum : clampValue(m_value + 1), DispatchEvent);
else
- setValueAsInteger(m_range.minimum, DispatchEvent);
+ setValueAsInteger(defaultValueForStepUp(), DispatchEvent);
}
String DateTimeNumericFieldElement::value() const
{
- if (!m_hasValue)
- return emptyString();
-
- if (m_range.maximum > 999)
- return convertToLocalizedNumber(String::number(m_value));
-
- if (m_range.maximum > 99)
- return convertToLocalizedNumber(String::format("%03d", m_value));
-
- return convertToLocalizedNumber(String::format("%02d", m_value));
+ return m_hasValue ? formatValue(m_value) : emptyString();
}
int DateTimeNumericFieldElement::valueAsInteger() const
@@ -180,13 +210,7 @@ int DateTimeNumericFieldElement::valueAsInteger() const
String DateTimeNumericFieldElement::visibleValue() const
{
- if (m_hasValue)
- return value();
-
- StringBuilder builder;
- for (int numberOfDashs = std::max(displaySizeOfNumber(m_range.maximum), displaySizeOfNumber(m_range.minimum)); numberOfDashs; --numberOfDashs)
- builder.append('-');
- return builder.toString();
+ return m_hasValue ? value() : m_placeholder;
}
} // namespace WebCore
diff --git a/Source/WebCore/html/shadow/DateTimeNumericFieldElement.h b/Source/WebCore/html/shadow/DateTimeNumericFieldElement.h
index 28f2b9e49..00eeef024 100644
--- a/Source/WebCore/html/shadow/DateTimeNumericFieldElement.h
+++ b/Source/WebCore/html/shadow/DateTimeNumericFieldElement.h
@@ -26,7 +26,7 @@
#ifndef DateTimeNumericFieldElement_h
#define DateTimeNumericFieldElement_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldElement.h"
namespace WebCore {
@@ -45,14 +45,18 @@ protected:
struct Range {
Range(int minimum, int maximum);
int clampValue(int) const;
+ bool isInRange(int) const;
int maximum;
int minimum;
};
- DateTimeNumericFieldElement(Document*, FieldOwner&, int minimum, int maximum);
+ DateTimeNumericFieldElement(Document*, FieldOwner&, int minimum, int maximum, const String& placeholder);
int clampValue(int value) const { return m_range.clampValue(value); }
+ virtual int clampValueForHardLimits(int) const;
+ virtual int defaultValueForStepDown() const;
+ virtual int defaultValueForStepUp() const;
const Range& range() const { return m_range; }
// DateTimeFieldElement functions.
@@ -64,6 +68,9 @@ protected:
virtual String visibleValue() const OVERRIDE FINAL;
private:
+ // Element function.
+ virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
+
// DateTimeFieldElement functions.
virtual void didBlur() OVERRIDE FINAL;
virtual void handleKeyboardEvent(KeyboardEvent*) OVERRIDE FINAL;
@@ -72,7 +79,11 @@ private:
virtual void stepUp() OVERRIDE FINAL;
virtual String value() const OVERRIDE FINAL;
+ String formatValue(int) const;
+ Localizer& localizerForOwner() const;
+
DOMTimeStamp m_lastDigitCharTime;
+ const String m_placeholder;
const Range m_range;
int m_value;
bool m_hasValue;
diff --git a/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp b/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp
index 6cb4ec1e2..742208f53 100644
--- a/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp
+++ b/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeSymbolicFieldElement.h"
#include "FontCache.h"
diff --git a/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.h b/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.h
index cb0ac1e7b..f1eab8eb4 100644
--- a/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.h
+++ b/Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.h
@@ -26,7 +26,7 @@
#ifndef DateTimeSymbolicFieldElement_h
#define DateTimeSymbolicFieldElement_h
-#if ENABLE(INPUT_TYPE_TIME_MULTIPLE_FIELDS)
+#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
#include "DateTimeFieldElement.h"
namespace WebCore {
diff --git a/Source/WebCore/html/shadow/HTMLContentElement.idl b/Source/WebCore/html/shadow/HTMLContentElement.idl
index c928d4494..448c979a3 100644
--- a/Source/WebCore/html/shadow/HTMLContentElement.idl
+++ b/Source/WebCore/html/shadow/HTMLContentElement.idl
@@ -24,11 +24,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
- interface [
- Conditional=SHADOW_DOM,
- V8EnabledAtRuntime=shadowDOM
- ] HTMLContentElement : HTMLElement {
- attribute [Reflect] DOMString select;
- };
-}
+[
+ Conditional=SHADOW_DOM,
+ V8EnabledAtRuntime=shadowDOM
+] interface HTMLContentElement : HTMLElement {
+ [Reflect] attribute DOMString select;
+ attribute boolean resetStyleInheritance;
+};
diff --git a/Source/WebCore/html/shadow/HTMLShadowElement.cpp b/Source/WebCore/html/shadow/HTMLShadowElement.cpp
index 938439612..5c5dbe94f 100644
--- a/Source/WebCore/html/shadow/HTMLShadowElement.cpp
+++ b/Source/WebCore/html/shadow/HTMLShadowElement.cpp
@@ -41,6 +41,7 @@ class Document;
inline HTMLShadowElement::HTMLShadowElement(const QualifiedName& tagName, Document* document)
: InsertionPoint(tagName, document)
+ , m_registeredWithShadowRoot(false)
{
ASSERT(hasTagName(HTMLNames::shadowTag));
}
@@ -68,4 +69,31 @@ bool HTMLShadowElement::doesSelectFromHostChildren() const
return false;
}
+Node::InsertionNotificationRequest HTMLShadowElement::insertedInto(ContainerNode* insertionPoint)
+{
+ InsertionPoint::insertedInto(insertionPoint);
+
+ if (insertionPoint->inDocument() && isActive()) {
+ if (ShadowRoot* root = shadowRoot()) {
+ root->registerShadowElement();
+ m_registeredWithShadowRoot = true;
+ }
+ }
+
+ return InsertionDone;
+}
+
+void HTMLShadowElement::removedFrom(ContainerNode* insertionPoint)
+{
+ if (insertionPoint->inDocument() && m_registeredWithShadowRoot) {
+ ShadowRoot* root = shadowRoot();
+ if (!root)
+ root = insertionPoint->shadowRoot();
+ if (root)
+ root->unregisterShadowElement();
+ m_registeredWithShadowRoot = false;
+ }
+ InsertionPoint::removedFrom(insertionPoint);
+}
+
} // namespace WebCore
diff --git a/Source/WebCore/html/shadow/HTMLShadowElement.h b/Source/WebCore/html/shadow/HTMLShadowElement.h
index a4ecdb3ad..119fa9f95 100644
--- a/Source/WebCore/html/shadow/HTMLShadowElement.h
+++ b/Source/WebCore/html/shadow/HTMLShadowElement.h
@@ -46,8 +46,14 @@ public:
bool isSelectValid() const OVERRIDE { return true; }
bool doesSelectFromHostChildren() const;
+protected:
+ virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
+ virtual void removedFrom(ContainerNode*) OVERRIDE;
+
private:
HTMLShadowElement(const QualifiedName&, Document*);
+
+ bool m_registeredWithShadowRoot;
};
} // namespace WebCore
diff --git a/Source/WebCore/html/shadow/HTMLShadowElement.idl b/Source/WebCore/html/shadow/HTMLShadowElement.idl
index 94facb7be..b50194503 100644
--- a/Source/WebCore/html/shadow/HTMLShadowElement.idl
+++ b/Source/WebCore/html/shadow/HTMLShadowElement.idl
@@ -28,12 +28,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
-
- interface [
- Conditional=SHADOW_DOM,
- V8EnabledAtRuntime=shadowDOM
- ] HTMLShadowElement : HTMLElement {
- };
-
-}
+[
+ Conditional=SHADOW_DOM,
+ V8EnabledAtRuntime=shadowDOM
+] interface HTMLShadowElement : HTMLElement {
+ attribute boolean resetStyleInheritance;
+};
diff --git a/Source/WebCore/html/shadow/InsertionPoint.cpp b/Source/WebCore/html/shadow/InsertionPoint.cpp
index 435796677..7aecaa56e 100644
--- a/Source/WebCore/html/shadow/InsertionPoint.cpp
+++ b/Source/WebCore/html/shadow/InsertionPoint.cpp
@@ -33,11 +33,13 @@
#include "ElementShadow.h"
#include "ShadowRoot.h"
+#include "StaticNodeList.h"
namespace WebCore {
InsertionPoint::InsertionPoint(const QualifiedName& tagName, Document* document)
: HTMLElement(tagName, document)
+ , m_shouldResetStyleInheritance(false)
{
}
@@ -86,6 +88,19 @@ bool InsertionPoint::isActive() const
return true;
}
+PassRefPtr<NodeList> InsertionPoint::distributedNodes() const
+{
+ if (!attached())
+ return 0;
+
+ Vector<RefPtr<Node> > nodes;
+
+ for (size_t i = 0; i < m_distribution.size(); ++i)
+ nodes.append(m_distribution.at(i));
+
+ return StaticNodeList::adopt(nodes);
+}
+
bool InsertionPoint::rendererIsNeeded(const NodeRenderingContext& context)
{
return !isShadowBoundary() && HTMLElement::rendererIsNeeded(context);
@@ -145,4 +160,18 @@ void InsertionPoint::removedFrom(ContainerNode* insertionPoint)
HTMLElement::removedFrom(insertionPoint);
}
+bool InsertionPoint::resetStyleInheritance() const
+{
+ return m_shouldResetStyleInheritance;
+}
+
+void InsertionPoint::setResetStyleInheritance(bool value)
+{
+ if (value != m_shouldResetStyleInheritance) {
+ m_shouldResetStyleInheritance = value;
+ if (attached() && isActive())
+ shadowRoot()->host()->setNeedsStyleRecalc();
+ }
+}
+
} // namespace WebCore
diff --git a/Source/WebCore/html/shadow/InsertionPoint.h b/Source/WebCore/html/shadow/InsertionPoint.h
index 6237de2e6..2ef36c1c5 100644
--- a/Source/WebCore/html/shadow/InsertionPoint.h
+++ b/Source/WebCore/html/shadow/InsertionPoint.h
@@ -49,10 +49,15 @@ public:
bool isShadowBoundary() const;
bool isActive() const;
+ PassRefPtr<NodeList> distributedNodes() const;
+
virtual const AtomicString& select() const = 0;
virtual bool isSelectValid() const = 0;
virtual bool doesSelectFromHostChildren() const = 0;
+ bool resetStyleInheritance() const;
+ void setResetStyleInheritance(bool);
+
virtual void attach();
virtual void detach();
virtual bool isInsertionPoint() const OVERRIDE { return true; }
@@ -75,6 +80,7 @@ protected:
private:
ContentDistribution m_distribution;
+ bool m_shouldResetStyleInheritance : 1;
};
inline bool isInsertionPoint(const Node* node)
diff --git a/Source/WebCore/html/shadow/CalendarPickerElement.cpp b/Source/WebCore/html/shadow/PickerIndicatorElement.cpp
index 7513f5b71..fa25bd673 100644
--- a/Source/WebCore/html/shadow/CalendarPickerElement.cpp
+++ b/Source/WebCore/html/shadow/PickerIndicatorElement.cpp
@@ -29,7 +29,7 @@
*/
#include "config.h"
-#include "CalendarPickerElement.h"
+#include "PickerIndicatorElement.h"
#if ENABLE(CALENDAR_PICKER)
@@ -49,39 +49,39 @@ namespace WebCore {
using namespace HTMLNames;
-inline CalendarPickerElement::CalendarPickerElement(Document* document)
+inline PickerIndicatorElement::PickerIndicatorElement(Document* document)
: HTMLDivElement(divTag, document)
, m_chooser(nullptr)
{
setShadowPseudoId("-webkit-calendar-picker-indicator");
}
-PassRefPtr<CalendarPickerElement> CalendarPickerElement::create(Document* document)
+PassRefPtr<PickerIndicatorElement> PickerIndicatorElement::create(Document* document)
{
- return adoptRef(new CalendarPickerElement(document));
+ return adoptRef(new PickerIndicatorElement(document));
}
-CalendarPickerElement::~CalendarPickerElement()
+PickerIndicatorElement::~PickerIndicatorElement()
{
closePopup();
ASSERT(!m_chooser);
}
-RenderObject* CalendarPickerElement::createRenderer(RenderArena* arena, RenderStyle*)
+RenderObject* PickerIndicatorElement::createRenderer(RenderArena* arena, RenderStyle*)
{
return new (arena) RenderDetailsMarker(this);
}
-inline HTMLInputElement* CalendarPickerElement::hostInput()
+inline HTMLInputElement* PickerIndicatorElement::hostInput()
{
- // JavaScript code can't create CalendarPickerElement objects. This is
+ // JavaScript code can't create PickerIndicatorElement objects. This is
// always in shadow of <input>.
ASSERT(shadowHost());
ASSERT(shadowHost()->hasTagName(inputTag));
return static_cast<HTMLInputElement*>(shadowHost());
}
-void CalendarPickerElement::defaultEventHandler(Event* event)
+void PickerIndicatorElement::defaultEventHandler(Event* event)
{
if (!renderer())
return;
@@ -98,7 +98,7 @@ void CalendarPickerElement::defaultEventHandler(Event* event)
HTMLDivElement::defaultEventHandler(event);
}
-bool CalendarPickerElement::willRespondToMouseClickEvents()
+bool PickerIndicatorElement::willRespondToMouseClickEvents()
{
const HTMLInputElement* input = hostInput();
if (renderer() && !input->readOnly() && !input->disabled())
@@ -107,17 +107,17 @@ bool CalendarPickerElement::willRespondToMouseClickEvents()
return HTMLDivElement::willRespondToMouseClickEvents();
}
-void CalendarPickerElement::didChooseValue(const String& value)
+void PickerIndicatorElement::didChooseValue(const String& value)
{
hostInput()->setValue(value, DispatchChangeEvent);
}
-void CalendarPickerElement::didEndChooser()
+void PickerIndicatorElement::didEndChooser()
{
m_chooser.clear();
}
-void CalendarPickerElement::openPopup()
+void PickerIndicatorElement::openPopup()
{
if (m_chooser)
return;
@@ -135,13 +135,19 @@ void CalendarPickerElement::openPopup()
parameters.minimum = input->minimum();
parameters.maximum = input->maximum();
parameters.required = input->required();
- Decimal step;
- if (hostInput()->getAllowedValueStep(&step))
+
+ StepRange stepRange = input->createStepRange(RejectAny);
+ if (stepRange.hasStep()) {
+ parameters.step = stepRange.step().toDouble();
+ parameters.stepBase = stepRange.stepBase().toDouble();
+ } else {
parameters.step = 1.0;
- else
- parameters.step = step.toDouble();
+ parameters.stepBase = 0;
+ }
+
parameters.anchorRectInRootView = document()->view()->contentsToRootView(hostInput()->pixelSnappedBoundingBox());
parameters.currentValue = input->value();
+ parameters.isAnchorElementRTL = input->computedStyle()->direction() == RTL;
if (HTMLDataListElement* dataList = input->dataList()) {
RefPtr<HTMLCollection> options = dataList->options();
for (unsigned i = 0; HTMLOptionElement* option = toHTMLOptionElement(options->item(i)); ++i) {
@@ -155,14 +161,14 @@ void CalendarPickerElement::openPopup()
m_chooser = chrome->client()->openDateTimeChooser(this, parameters);
}
-void CalendarPickerElement::closePopup()
+void PickerIndicatorElement::closePopup()
{
if (!m_chooser)
return;
m_chooser->endChooser();
}
-void CalendarPickerElement::detach()
+void PickerIndicatorElement::detach()
{
closePopup();
HTMLDivElement::detach();
diff --git a/Source/WebCore/html/shadow/CalendarPickerElement.h b/Source/WebCore/html/shadow/PickerIndicatorElement.h
index f90347864..1d891c22a 100644
--- a/Source/WebCore/html/shadow/CalendarPickerElement.h
+++ b/Source/WebCore/html/shadow/PickerIndicatorElement.h
@@ -28,8 +28,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef CalendarPickerElement_h
-#define CalendarPickerElement_h
+#ifndef PickerIndicatorElement_h
+#define PickerIndicatorElement_h
#if ENABLE(CALENDAR_PICKER)
@@ -43,10 +43,10 @@ namespace WebCore {
class HTMLInputElement;
class PagePopup;
-class CalendarPickerElement : public HTMLDivElement, public DateTimeChooserClient {
+class PickerIndicatorElement : public HTMLDivElement, public DateTimeChooserClient {
public:
- static PassRefPtr<CalendarPickerElement> create(Document*);
- virtual ~CalendarPickerElement();
+ static PassRefPtr<PickerIndicatorElement> create(Document*);
+ virtual ~PickerIndicatorElement();
void openPopup();
void closePopup();
virtual bool willRespondToMouseClickEvents() OVERRIDE;
@@ -56,7 +56,7 @@ public:
virtual void didEndChooser() OVERRIDE;
private:
- CalendarPickerElement(Document*);
+ PickerIndicatorElement(Document*);
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
virtual void defaultEventHandler(Event*) OVERRIDE;
virtual void detach() OVERRIDE;
diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp
index d8bbd2bbb..d6920a913 100644
--- a/Source/WebCore/html/shadow/SliderThumbElement.cpp
+++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp
@@ -256,7 +256,7 @@ void SliderThumbElement::setPositionFromPoint(const LayoutPoint& point)
return;
input->setTextAsOfLastFormControlChangeEvent(input->value());
- LayoutPoint offset = roundedLayoutPoint(input->renderer()->absoluteToLocal(point, false, true));
+ LayoutPoint offset = roundedLayoutPoint(input->renderer()->absoluteToLocal(point, UseTransforms | SnapOffsetForTransforms));
bool isVertical = hasVerticalAppearance(input);
bool isLeftToRightDirection = renderBox()->style()->isLeftToRightDirection();
LayoutUnit trackSize;
diff --git a/Source/WebCore/html/shadow/SpinButtonElement.cpp b/Source/WebCore/html/shadow/SpinButtonElement.cpp
index e5247c4f3..99dd71947 100644
--- a/Source/WebCore/html/shadow/SpinButtonElement.cpp
+++ b/Source/WebCore/html/shadow/SpinButtonElement.cpp
@@ -89,7 +89,7 @@ void SpinButtonElement::defaultEventHandler(Event* event)
}
MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
- IntPoint local = roundedIntPoint(box->absoluteToLocal(mouseEvent->absoluteLocation(), false, true));
+ IntPoint local = roundedIntPoint(box->absoluteToLocal(mouseEvent->absoluteLocation(), UseTransforms | SnapOffsetForTransforms));
if (mouseEvent->type() == eventNames().mousedownEvent && mouseEvent->button() == LeftButton) {
if (box->pixelSnappedBorderBoxRect().contains(local)) {
// The following functions of HTMLInputElement may run JavaScript
diff --git a/Source/WebCore/html/shadow/TextFieldDecorationElement.cpp b/Source/WebCore/html/shadow/TextFieldDecorationElement.cpp
index 689aa0ad2..be085e430 100644
--- a/Source/WebCore/html/shadow/TextFieldDecorationElement.cpp
+++ b/Source/WebCore/html/shadow/TextFieldDecorationElement.cpp
@@ -57,6 +57,7 @@ TextFieldDecorator::~TextFieldDecorator()
TextFieldDecorationElement::TextFieldDecorationElement(Document* document, TextFieldDecorator* decorator)
: HTMLDivElement(HTMLNames::divTag, document)
, m_textFieldDecorator(decorator)
+ , m_isInHoverState(false)
{
ASSERT(decorator);
setHasCustomCallbacks();
@@ -137,6 +138,8 @@ void TextFieldDecorationElement::updateImage()
image = m_textFieldDecorator->imageForDisabledState();
else if (hostInput()->readOnly())
image = m_textFieldDecorator->imageForReadonlyState();
+ else if (m_isInHoverState)
+ image = m_textFieldDecorator->imageForHoverState();
else
image = m_textFieldDecorator->imageForNormalState();
ASSERT(image);
@@ -194,10 +197,29 @@ void TextFieldDecorationElement::defaultEventHandler(Event* event)
event->setDefaultHandled();
}
+ if (event->type() == eventNames().mouseoverEvent) {
+ m_isInHoverState = true;
+ updateImage();
+ }
+
+ if (event->type() == eventNames().mouseoutEvent) {
+ m_isInHoverState = false;
+ updateImage();
+ }
+
if (!event->defaultHandled())
HTMLDivElement::defaultEventHandler(event);
}
+bool TextFieldDecorationElement::willRespondToMouseMoveEvents()
+{
+ const HTMLInputElement* input = hostInput();
+ if (!input->disabled() && !input->readOnly())
+ return true;
+
+ return HTMLDivElement::willRespondToMouseMoveEvents();
+}
+
bool TextFieldDecorationElement::willRespondToMouseClickEvents()
{
const HTMLInputElement* input = hostInput();
diff --git a/Source/WebCore/html/shadow/TextFieldDecorationElement.h b/Source/WebCore/html/shadow/TextFieldDecorationElement.h
index 2c8d822b3..fd5a2c495 100644
--- a/Source/WebCore/html/shadow/TextFieldDecorationElement.h
+++ b/Source/WebCore/html/shadow/TextFieldDecorationElement.h
@@ -52,6 +52,7 @@ public:
virtual CachedImage* imageForNormalState() = 0;
virtual CachedImage* imageForDisabledState() = 0;
virtual CachedImage* imageForReadonlyState() = 0;
+ virtual CachedImage* imageForHoverState() = 0;
virtual void handleClick(HTMLInputElement*) = 0;
// This function is called just before detaching the decoration. It must not
@@ -71,6 +72,7 @@ public:
TextFieldDecorator* textFieldDecorator() { return m_textFieldDecorator; }
void decorate(HTMLInputElement*, bool visible);
+ virtual bool willRespondToMouseMoveEvents() OVERRIDE;
virtual bool willRespondToMouseClickEvents() OVERRIDE;
private:
@@ -87,6 +89,7 @@ private:
void updateImage();
TextFieldDecorator* m_textFieldDecorator;
+ bool m_isInHoverState;
};
inline TextFieldDecorationElement* toTextFieldDecorationElement(Node* node)
diff --git a/Source/WebCore/html/track/TextTrack.idl b/Source/WebCore/html/track/TextTrack.idl
index 9836f02ce..e6465a7af 100644
--- a/Source/WebCore/html/track/TextTrack.idl
+++ b/Source/WebCore/html/track/TextTrack.idl
@@ -23,38 +23,35 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack,
+ EventTarget,
+ JSCustomMarkFunction,
+ JSCustomIsReachable
+] interface TextTrack {
+ readonly attribute DOMString kind;
+ readonly attribute DOMString label;
+ readonly attribute DOMString language;
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack,
- EventTarget,
- JSCustomMarkFunction,
- JSCustomIsReachable
- ] TextTrack {
- readonly attribute DOMString kind;
- readonly attribute DOMString label;
- readonly attribute DOMString language;
+ attribute DOMString mode;
- attribute DOMString mode;
+ readonly attribute TextTrackCueList cues;
+ readonly attribute TextTrackCueList activeCues;
+ attribute EventListener oncuechange;
- readonly attribute TextTrackCueList cues;
- readonly attribute TextTrackCueList activeCues;
- attribute EventListener oncuechange;
+ void addCue(in TextTrackCue cue)
+ raises (DOMException);
+ void removeCue(in TextTrackCue cue)
+ raises (DOMException);
- void addCue(in TextTrackCue cue)
- raises (DOMException);
- void removeCue(in TextTrackCue cue)
- raises (DOMException);
-
- // EventTarget interface
- void addEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- void removeEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
- };
-}
+ // EventTarget interface
+ void addEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ void removeEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ boolean dispatchEvent(in Event evt)
+ raises(EventException);
+};
diff --git a/Source/WebCore/html/track/TextTrackCue.idl b/Source/WebCore/html/track/TextTrackCue.idl
index 040110963..ddb67e44e 100644
--- a/Source/WebCore/html/track/TextTrackCue.idl
+++ b/Source/WebCore/html/track/TextTrackCue.idl
@@ -23,52 +23,49 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack,
+ JSGenerateToNativeObject,
+ Constructor(in double startTime, in double endTime, in DOMString text),
+ CallWith=ScriptExecutionContext,
+ EventTarget,
+ JSCustomMarkFunction,
+ JSCustomIsReachable
+] interface TextTrackCue {
+ readonly attribute TextTrack track;
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack,
- JSGenerateToNativeObject,
- Constructor(in double startTime, in double endTime, in DOMString text),
- CallWith=ScriptExecutionContext,
- EventTarget,
- JSCustomMarkFunction,
- JSCustomIsReachable
- ] TextTrackCue {
- readonly attribute TextTrack track;
+ attribute DOMString id;
+ attribute double startTime;
+ attribute double endTime;
+ attribute boolean pauseOnExit;
- attribute DOMString id;
- attribute double startTime;
- attribute double endTime;
- attribute boolean pauseOnExit;
+ attribute DOMString vertical
+ setter raises (DOMException);
+ attribute boolean snapToLines;
+ attribute long line
+ setter raises (DOMException);
+ attribute long position
+ setter raises (DOMException);
+ attribute long size
+ setter raises (DOMException);
+ attribute DOMString align
+ setter raises (DOMException);
- attribute DOMString vertical
- setter raises (DOMException);
- attribute boolean snapToLines;
- attribute long line
- setter raises (DOMException);
- attribute long position
- setter raises (DOMException);
- attribute long size
- setter raises (DOMException);
- attribute DOMString align
- setter raises (DOMException);
+ attribute DOMString text;
+ DocumentFragment getCueAsHTML();
+
+ attribute EventListener onenter;
+ attribute EventListener onexit;
+
+ // EventTarget interface
+ void addEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ void removeEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ boolean dispatchEvent(in Event evt)
+ raises(EventException);
+};
- attribute DOMString text;
- DocumentFragment getCueAsHTML();
-
- attribute EventListener onenter;
- attribute EventListener onexit;
-
- // EventTarget interface
- void addEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- void removeEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
- };
-
-}
diff --git a/Source/WebCore/html/track/TextTrackCueList.idl b/Source/WebCore/html/track/TextTrackCueList.idl
index 380e59a31..dab976c56 100644
--- a/Source/WebCore/html/track/TextTrackCueList.idl
+++ b/Source/WebCore/html/track/TextTrackCueList.idl
@@ -23,16 +23,13 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack,
+ IndexedGetter
+] interface TextTrackCueList {
+ readonly attribute unsigned long length;
+ TextTrackCue item(in unsigned long index);
+ TextTrackCue getCueById(in DOMString id);
+};
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack,
- IndexedGetter
- ] TextTrackCueList {
- readonly attribute unsigned long length;
- TextTrackCue item(in unsigned long index);
- TextTrackCue getCueById(in DOMString id);
- };
-
-}
diff --git a/Source/WebCore/html/track/TextTrackList.idl b/Source/WebCore/html/track/TextTrackList.idl
index ad4e8621c..0b0e45016 100644
--- a/Source/WebCore/html/track/TextTrackList.idl
+++ b/Source/WebCore/html/track/TextTrackList.idl
@@ -23,30 +23,27 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack,
+ IndexedGetter,
+ EventTarget,
+ JSCustomMarkFunction,
+ JSCustomIsReachable,
+ V8GenerateIsReachable=ImplOwnerRoot
+] interface TextTrackList {
+ readonly attribute unsigned long length;
+ TextTrack item(in unsigned long index);
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack,
- IndexedGetter,
- EventTarget,
- JSCustomMarkFunction,
- JSCustomIsReachable,
- V8GenerateIsReachable=ImplOwnerRoot
- ] TextTrackList {
- readonly attribute unsigned long length;
- TextTrack item(in unsigned long index);
+ attribute EventListener onaddtrack;
- attribute EventListener onaddtrack;
+ void addEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ void removeEventListener(in DOMString type,
+ in EventListener listener,
+ in [Optional] boolean useCapture);
+ boolean dispatchEvent(in Event evt)
+ raises(EventException);
+};
- void addEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- void removeEventListener(in DOMString type,
- in EventListener listener,
- in [Optional] boolean useCapture);
- boolean dispatchEvent(in Event evt)
- raises(EventException);
- };
-
-}
diff --git a/Source/WebCore/html/track/TrackEvent.idl b/Source/WebCore/html/track/TrackEvent.idl
index b475ad41a..59b5ca6c6 100644
--- a/Source/WebCore/html/track/TrackEvent.idl
+++ b/Source/WebCore/html/track/TrackEvent.idl
@@ -23,14 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module html {
+[
+ Conditional=VIDEO_TRACK,
+ V8EnabledAtRuntime=webkitVideoTrack,
+ ConstructorTemplate=Event
+] interface TrackEvent : Event {
+ [InitializedByEventConstructor, CustomGetter] readonly attribute object track;
+};
- interface [
- Conditional=VIDEO_TRACK,
- V8EnabledAtRuntime=webkitVideoTrack,
- ConstructorTemplate=Event
- ] TrackEvent : Event {
- readonly attribute [InitializedByEventConstructor, CustomGetter] object track;
- };
-
-}