2 * Copyright (C) 2006, 2008, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2010 Google Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #ifndef TextControlInnerElements_h
28 #define TextControlInnerElements_h
30 #include "core/html/HTMLDivElement.h"
31 #include "core/speech/SpeechInputListener.h"
32 #include "wtf/Forward.h"
38 class TextControlInnerContainer FINAL : public HTMLDivElement {
40 static PassRefPtr<TextControlInnerContainer> create(Document&);
42 TextControlInnerContainer(Document&);
43 virtual RenderObject* createRenderer(RenderStyle*) OVERRIDE;
46 class EditingViewPortElement FINAL : public HTMLDivElement {
48 static PassRefPtr<EditingViewPortElement> create(Document&);
51 EditingViewPortElement(Document&);
52 virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
55 virtual bool supportsFocus() const OVERRIDE { return false; }
58 class TextControlInnerTextElement FINAL : public HTMLDivElement {
60 static PassRefPtr<TextControlInnerTextElement> create(Document&);
62 virtual void defaultEventHandler(Event*) OVERRIDE;
65 TextControlInnerTextElement(Document&);
66 virtual RenderObject* createRenderer(RenderStyle*) OVERRIDE;
67 virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
68 virtual bool supportsFocus() const OVERRIDE { return false; }
71 class SearchFieldDecorationElement FINAL : public HTMLDivElement {
73 static PassRefPtr<SearchFieldDecorationElement> create(Document&);
75 virtual void defaultEventHandler(Event*) OVERRIDE;
76 virtual bool willRespondToMouseClickEvents() OVERRIDE;
79 SearchFieldDecorationElement(Document&);
80 virtual const AtomicString& shadowPseudoId() const OVERRIDE;
81 virtual bool supportsFocus() const OVERRIDE { return false; }
84 class SearchFieldCancelButtonElement FINAL : public HTMLDivElement {
86 static PassRefPtr<SearchFieldCancelButtonElement> create(Document&);
88 virtual void defaultEventHandler(Event*) OVERRIDE;
89 virtual bool willRespondToMouseClickEvents() OVERRIDE;
92 SearchFieldCancelButtonElement(Document&);
93 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;
94 virtual bool supportsFocus() const OVERRIDE { return false; }
99 #if ENABLE(INPUT_SPEECH)
101 class InputFieldSpeechButtonElement FINAL
102 : public HTMLDivElement,
103 public SpeechInputListener {
105 enum SpeechInputState {
111 static PassRefPtr<InputFieldSpeechButtonElement> create(Document&);
112 virtual ~InputFieldSpeechButtonElement();
114 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;
115 virtual void defaultEventHandler(Event*) OVERRIDE;
116 virtual bool willRespondToMouseClickEvents() OVERRIDE;
117 virtual bool isInputFieldSpeechButtonElement() const OVERRIDE { return true; }
118 SpeechInputState state() const { return m_state; }
119 void startSpeechInput();
120 void stopSpeechInput();
122 // SpeechInputListener methods.
123 virtual void didCompleteRecording(int) OVERRIDE;
124 virtual void didCompleteRecognition(int) OVERRIDE;
125 virtual void setRecognitionResult(int, const SpeechInputResultArray&) OVERRIDE;
128 InputFieldSpeechButtonElement(Document&);
129 SpeechInput* speechInput();
130 void setState(SpeechInputState state);
131 virtual bool isMouseFocusable() const OVERRIDE { return false; }
132 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;
135 SpeechInputState m_state;
137 WillBePersistentSpeechInputResultArray m_results;
140 DEFINE_TYPE_CASTS(InputFieldSpeechButtonElement, Element, element, element->isInputFieldSpeechButtonElement(), element.isInputFieldSpeechButtonElement());
142 #endif // ENABLE(INPUT_SPEECH)