| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ | 5 #ifndef WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ |
| 6 #define WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ | 6 #define WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ |
| 7 | 7 |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/task.h" |
| 9 | 10 |
| 10 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 11 | 12 |
| 12 #include <deque> | 13 #include <deque> |
| 13 | 14 |
| 14 MSVC_PUSH_WARNING_LEVEL(0); | 15 MSVC_PUSH_WARNING_LEVEL(0); |
| 15 #include "EditorClient.h" | 16 #include "EditorClient.h" |
| 16 MSVC_POP_WARNING(); | 17 MSVC_POP_WARNING(); |
| 17 | 18 |
| 18 namespace WebCore { | 19 namespace WebCore { |
| 19 class Frame; | 20 class Frame; |
| 21 class HTMLInputElement; |
| 20 class Node; | 22 class Node; |
| 21 class PlatformKeyboardEvent; | 23 class PlatformKeyboardEvent; |
| 22 } | 24 } |
| 23 | 25 |
| 24 class WebView; | 26 class WebView; |
| 25 class WebViewImpl; | 27 class WebViewImpl; |
| 26 | 28 |
| 27 class EditorClientImpl : public WebCore::EditorClient { | 29 class EditorClientImpl : public WebCore::EditorClient { |
| 28 public: | 30 public: |
| 29 EditorClientImpl(WebView* web_view); | 31 EditorClientImpl(WebView* web_view); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 virtual void updateSpellingUIWithGrammarString(const WebCore::String&, | 98 virtual void updateSpellingUIWithGrammarString(const WebCore::String&, |
| 97 const WebCore::GrammarDetail& d
etail); | 99 const WebCore::GrammarDetail& d
etail); |
| 98 virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&); | 100 virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&); |
| 99 virtual void showSpellingUI(bool show); | 101 virtual void showSpellingUI(bool show); |
| 100 virtual bool spellingUIIsShowing(); | 102 virtual bool spellingUIIsShowing(); |
| 101 virtual void getGuessesForWord(const WebCore::String&, | 103 virtual void getGuessesForWord(const WebCore::String&, |
| 102 WTF::Vector<WebCore::String>& guesses); | 104 WTF::Vector<WebCore::String>& guesses); |
| 103 virtual void setInputMethodState(bool enabled); | 105 virtual void setInputMethodState(bool enabled); |
| 104 | 106 |
| 105 void SetUseEditorDelegate(bool value) { use_editor_delegate_ = value; } | 107 void SetUseEditorDelegate(bool value) { use_editor_delegate_ = value; } |
| 106 // HACK for webkit bug #16976. | |
| 107 // TODO (timsteele): Clean this up once webkit bug 16976 is fixed. | |
| 108 void PreserveSelection(); | |
| 109 | 108 |
| 110 // It would be better to add these methods to the objects they describe, but | 109 // It would be better to add these methods to the objects they describe, but |
| 111 // those are in WebCore and therefore inaccessible. | 110 // those are in WebCore and therefore inaccessible. |
| 112 virtual std::wstring DescribeOrError(int number, | 111 virtual std::wstring DescribeOrError(int number, |
| 113 WebCore::ExceptionCode ec); | 112 WebCore::ExceptionCode ec); |
| 114 virtual std::wstring DescribeOrError(WebCore::Node* node, | 113 virtual std::wstring DescribeOrError(WebCore::Node* node, |
| 115 WebCore::ExceptionCode ec); | 114 WebCore::ExceptionCode ec); |
| 116 virtual std::wstring Describe(WebCore::Range* range); | 115 virtual std::wstring Describe(WebCore::Range* range); |
| 117 virtual std::wstring Describe(WebCore::Node* node); | 116 virtual std::wstring Describe(WebCore::Node* node); |
| 118 virtual std::wstring Describe(WebCore::EditorInsertAction action); | 117 virtual std::wstring Describe(WebCore::EditorInsertAction action); |
| 119 virtual std::wstring Describe(WebCore::EAffinity affinity); | 118 virtual std::wstring Describe(WebCore::EAffinity affinity); |
| 120 virtual std::wstring Describe(WebCore::CSSStyleDeclaration* style); | 119 virtual std::wstring Describe(WebCore::CSSStyleDeclaration* style); |
| 121 | 120 |
| 122 private: | 121 private: |
| 123 void ModifySelection(WebCore::Frame* frame, | 122 void ModifySelection(WebCore::Frame* frame, |
| 124 WebCore::KeyboardEvent* event); | 123 WebCore::KeyboardEvent* event); |
| 125 | 124 |
| 125 void DoAutofill(WebCore::HTMLInputElement* input_element, bool backspace); |
| 126 |
| 126 protected: | 127 protected: |
| 127 WebViewImpl* web_view_; | 128 WebViewImpl* web_view_; |
| 128 bool use_editor_delegate_; | 129 bool use_editor_delegate_; |
| 129 bool in_redo_; | 130 bool in_redo_; |
| 130 | 131 |
| 131 // Should preserve the selection in next call to shouldChangeSelectedRange. | |
| 132 bool preserve_; | |
| 133 | |
| 134 // Points to an HTMLInputElement that was just autocompleted (else NULL), | |
| 135 // for use by respondToChangedContents(). | |
| 136 WebCore::Element* pending_inline_autocompleted_element_; | |
| 137 | |
| 138 typedef std::deque<WTF::RefPtr<WebCore::EditCommand> > EditCommandStack; | 132 typedef std::deque<WTF::RefPtr<WebCore::EditCommand> > EditCommandStack; |
| 139 EditCommandStack undo_stack_; | 133 EditCommandStack undo_stack_; |
| 140 EditCommandStack redo_stack_; | 134 EditCommandStack redo_stack_; |
| 135 |
| 136 private: |
| 137 // Whether the last entered key was a backspace. |
| 138 bool backspace_pressed_; |
| 139 |
| 140 // The method factory used to post autofill related tasks. |
| 141 ScopedRunnableMethodFactory<EditorClientImpl> autofill_factory_; |
| 141 }; | 142 }; |
| 142 | 143 |
| 143 #endif // WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ | 144 #endif // WEBKIT_GLUE_EDITOR_CLIENT_IMPL_H__ |
| 144 | 145 |
| OLD | NEW |