Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / html / shadow / SliderThumbElement.h
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2010 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #ifndef SliderThumbElement_h
33 #define SliderThumbElement_h
34
35 #include "core/HTMLNames.h"
36 #include "core/html/HTMLDivElement.h"
37 #include "core/rendering/RenderBlockFlow.h"
38 #include "wtf/Forward.h"
39
40 namespace blink {
41
42 class HTMLInputElement;
43 class Event;
44
45 class SliderThumbElement final : public HTMLDivElement {
46 public:
47     static PassRefPtrWillBeRawPtr<SliderThumbElement> create(Document&);
48
49     void setPositionFromValue();
50
51     void dragFrom(const LayoutPoint&);
52     virtual void defaultEventHandler(Event*) override;
53     virtual bool willRespondToMouseMoveEvents() override;
54     virtual bool willRespondToMouseClickEvents() override;
55     virtual void detach(const AttachContext& = AttachContext()) override;
56     virtual const AtomicString& shadowPseudoId() const override;
57     HTMLInputElement* hostInput() const;
58     void setPositionFromPoint(const LayoutPoint&);
59     void stopDragging();
60
61 private:
62     SliderThumbElement(Document&);
63     virtual RenderObject* createRenderer(RenderStyle*) override;
64     virtual PassRefPtrWillBeRawPtr<Element> cloneElementWithoutAttributesAndChildren() override;
65     virtual bool isDisabledFormControl() const override;
66     virtual bool matchesReadOnlyPseudoClass() const override;
67     virtual bool matchesReadWritePseudoClass() const override;
68     virtual Node* focusDelegate() override;
69     void startDragging();
70
71     bool m_inDragMode;
72 };
73
74 inline PassRefPtrWillBeRawPtr<Element> SliderThumbElement::cloneElementWithoutAttributesAndChildren()
75 {
76     return create(document());
77 }
78
79 // FIXME: There are no ways to check if a node is a SliderThumbElement.
80 DEFINE_ELEMENT_TYPE_CASTS(SliderThumbElement, isHTMLElement());
81
82 class SliderContainerElement final : public HTMLDivElement {
83 public:
84     DECLARE_NODE_FACTORY(SliderContainerElement);
85
86 private:
87     explicit SliderContainerElement(Document&);
88     virtual RenderObject* createRenderer(RenderStyle*) override;
89     virtual const AtomicString& shadowPseudoId() const override;
90 };
91
92 }
93
94 #endif