Index: Source/core/html/ColorInputType.cpp |
diff --git a/Source/core/html/ColorInputType.cpp b/Source/core/html/ColorInputType.cpp |
deleted file mode 100644 |
index 16a85e232b97cd632175fdc1138f1fd0ed281009..0000000000000000000000000000000000000000 |
--- a/Source/core/html/ColorInputType.cpp |
+++ /dev/null |
@@ -1,247 +0,0 @@ |
-/* |
- * 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" |
-#include "core/html/ColorInputType.h" |
- |
-#include "CSSPropertyNames.h" |
-#include "RuntimeEnabledFeatures.h" |
-#include "bindings/v8/ExceptionStatePlaceholder.h" |
-#include "bindings/v8/ScriptController.h" |
-#include "core/dom/MouseEvent.h" |
-#include "core/dom/shadow/ShadowRoot.h" |
-#include "core/html/HTMLDataListElement.h" |
-#include "core/html/HTMLDivElement.h" |
-#include "core/html/HTMLInputElement.h" |
-#include "core/html/HTMLOptionElement.h" |
-#include "core/html/InputTypeNames.h" |
-#include "core/page/Chrome.h" |
-#include "core/platform/graphics/Color.h" |
-#include "core/rendering/RenderView.h" |
-#include "wtf/PassOwnPtr.h" |
-#include "wtf/text/WTFString.h" |
- |
-namespace WebCore { |
- |
-using namespace HTMLNames; |
- |
-static bool isValidColorString(const String& value) |
-{ |
- if (value.isEmpty()) |
- return false; |
- if (value[0] != '#') |
- return false; |
- |
- // We don't accept #rgb and #aarrggbb formats. |
- if (value.length() != 7) |
- return false; |
- Color color(value); |
- return color.isValid() && !color.hasAlpha(); |
-} |
- |
-PassRefPtr<InputType> ColorInputType::create(HTMLInputElement* element) |
-{ |
- return adoptRef(new ColorInputType(element)); |
-} |
- |
-ColorInputType::~ColorInputType() |
-{ |
- endColorChooser(); |
-} |
- |
-void ColorInputType::countUsage() |
-{ |
- observeFeatureIfVisible(UseCounter::InputTypeColor); |
-} |
- |
-bool ColorInputType::isColorControl() const |
-{ |
- return true; |
-} |
- |
-const AtomicString& ColorInputType::formControlType() const |
-{ |
- return InputTypeNames::color(); |
-} |
- |
-bool ColorInputType::supportsRequired() const |
-{ |
- return false; |
-} |
- |
-String ColorInputType::fallbackValue() const |
-{ |
- return String("#000000"); |
-} |
- |
-String ColorInputType::sanitizeValue(const String& proposedValue) const |
-{ |
- if (!isValidColorString(proposedValue)) |
- return fallbackValue(); |
- |
- return proposedValue.lower(); |
-} |
- |
-Color ColorInputType::valueAsColor() const |
-{ |
- return Color(element()->value()); |
-} |
- |
-void ColorInputType::createShadowSubtree() |
-{ |
- ASSERT(element()->shadow()); |
- |
- Document& document = element()->document(); |
- RefPtr<HTMLDivElement> wrapperElement = HTMLDivElement::create(document); |
- wrapperElement->setPart(AtomicString("-webkit-color-swatch-wrapper", AtomicString::ConstructFromLiteral)); |
- RefPtr<HTMLDivElement> colorSwatch = HTMLDivElement::create(document); |
- colorSwatch->setPart(AtomicString("-webkit-color-swatch", AtomicString::ConstructFromLiteral)); |
- wrapperElement->appendChild(colorSwatch.release()); |
- element()->userAgentShadowRoot()->appendChild(wrapperElement.release()); |
- |
- updateColorSwatch(); |
-} |
- |
-void ColorInputType::setValue(const String& value, bool valueChanged, TextFieldEventBehavior eventBehavior) |
-{ |
- InputType::setValue(value, valueChanged, eventBehavior); |
- |
- if (!valueChanged) |
- return; |
- |
- updateColorSwatch(); |
- if (m_chooser) |
- m_chooser->setSelectedColor(valueAsColor()); |
-} |
- |
-void ColorInputType::handleDOMActivateEvent(Event* event) |
-{ |
- if (element()->isDisabledFormControl() || !element()->renderer()) |
- return; |
- |
- if (!ScriptController::processingUserGesture()) |
- return; |
- |
- Chrome* chrome = this->chrome(); |
- if (chrome && !m_chooser) |
- m_chooser = chrome->createColorChooser(this, valueAsColor()); |
- |
- event->setDefaultHandled(); |
-} |
- |
-void ColorInputType::detach() |
-{ |
- endColorChooser(); |
-} |
- |
-bool ColorInputType::shouldRespectListAttribute() |
-{ |
- return InputType::themeSupportsDataListUI(this); |
-} |
- |
-bool ColorInputType::typeMismatchFor(const String& value) const |
-{ |
- return !isValidColorString(value); |
-} |
- |
-void ColorInputType::didChooseColor(const Color& color) |
-{ |
- if (element()->isDisabledFormControl() || color == valueAsColor()) |
- return; |
- element()->setValueFromRenderer(color.serialized()); |
- updateColorSwatch(); |
- element()->dispatchFormControlChangeEvent(); |
-} |
- |
-void ColorInputType::didEndChooser() |
-{ |
- m_chooser.clear(); |
-} |
- |
-void ColorInputType::endColorChooser() |
-{ |
- if (m_chooser) |
- m_chooser->endChooser(); |
-} |
- |
-void ColorInputType::updateColorSwatch() |
-{ |
- HTMLElement* colorSwatch = shadowColorSwatch(); |
- if (!colorSwatch) |
- return; |
- |
- colorSwatch->setInlineStyleProperty(CSSPropertyBackgroundColor, element()->value()); |
-} |
- |
-HTMLElement* ColorInputType::shadowColorSwatch() const |
-{ |
- ShadowRoot* shadow = element()->userAgentShadowRoot(); |
- return shadow ? toHTMLElement(shadow->firstChild()->firstChild()) : 0; |
-} |
- |
-IntRect ColorInputType::elementRectRelativeToRootView() const |
-{ |
- return element()->document().view()->contentsToRootView(element()->pixelSnappedBoundingBox()); |
-} |
- |
-Color ColorInputType::currentColor() |
-{ |
- return valueAsColor(); |
-} |
- |
-bool ColorInputType::shouldShowSuggestions() const |
-{ |
- if (RuntimeEnabledFeatures::dataListElementEnabled()) |
- return element()->fastHasAttribute(listAttr); |
- |
- return false; |
-} |
- |
-Vector<Color> ColorInputType::suggestions() const |
-{ |
- Vector<Color> suggestions; |
- if (RuntimeEnabledFeatures::dataListElementEnabled()) { |
- HTMLDataListElement* dataList = element()->dataList(); |
- if (dataList) { |
- RefPtr<HTMLCollection> options = dataList->options(); |
- for (unsigned i = 0; HTMLOptionElement* option = toHTMLOptionElement(options->item(i)); i++) { |
- if (!element()->isValidValue(option->value())) |
- continue; |
- Color color(option->value()); |
- if (!color.isValid()) |
- continue; |
- suggestions.append(color); |
- } |
- } |
- } |
- return suggestions; |
-} |
- |
-} // namespace WebCore |