Index: Source/web/PopupMenuImpl.h |
diff --git a/Source/web/PopupMenuImpl.h b/Source/web/PopupMenuImpl.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..743122fdb9fe1442fb9e38bf53ccb42cd7db8208 |
--- /dev/null |
+++ b/Source/web/PopupMenuImpl.h |
@@ -0,0 +1,64 @@ |
+// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef PopupMenuImpl_h |
+#define PopupMenuImpl_h |
+ |
+#include "core/html/forms/PopupMenuClient.h" |
+#include "core/page/PagePopupClient.h" |
+#include "platform/PopupMenu.h" |
+ |
+namespace blink { |
+ |
+class ChromeClientImpl; |
+class PagePopup; |
+class HTMLElement; |
+class HTMLHRElement; |
+class HTMLOptGroupElement; |
+class HTMLOptionElement; |
+ |
+class PopupMenuImpl final : public PopupMenu, public PagePopupClient { |
+public: |
+ static PassRefPtrWillBeRawPtr<PopupMenuImpl> create(ChromeClientImpl*, PopupMenuClient*); |
+ virtual ~PopupMenuImpl(); |
+ |
+ void dispose(); |
+ |
+private: |
+ PopupMenuImpl(ChromeClientImpl*, PopupMenuClient*); |
+ |
+ void addOption(HTMLOptionElement&, SharedBuffer*); |
+ void addOptGroup(HTMLOptGroupElement&, SharedBuffer*); |
+ void addSeparator(HTMLHRElement&, SharedBuffer*); |
+ void addElementStyle(HTMLElement&, SharedBuffer*); |
+ |
+ // PopupMenu functions: |
+ void show(const FloatQuad& controlPosition, const IntSize& controlSize, int index) override; |
+ void hide() override; |
+ void updateFromElement() override; |
+ void disconnectClient() override; |
+ |
+ // PagePopupClient functions: |
+ IntSize contentSize() override; |
+ void writeDocument(SharedBuffer*) override; |
+ void didWriteDocument(Document&) override; |
+ void setValueAndClosePopup(int, const String&) override; |
+ void setValue(const String&) override; |
+ void closePopup() override; |
+ Element& ownerElement() override; |
+ Locale& locale() override; |
+ void didClosePopup() override; |
+ |
+ ChromeClientImpl* m_chromeClient; |
+ PopupMenuClient* m_client; |
+ PagePopup* m_popup; |
+ // If >= 0, this is the index we should accept when the popup closes. |
+ // This is used for keyboard navigation, where we want the |
+ // text to change immediately but set the value on close. |
+ int m_indexToSetOnClose; |
+}; |
+ |
+} |
+ |
+#endif // PopupMenuImpl_h |