Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1917)

Unified Diff: Source/web/PopupMenuImpl.h

Issue 736883002: Implement <select> Popup Menu using PagePopup (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed tests for mac Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/web/ExternalPopupMenuTest.cpp ('k') | Source/web/PopupMenuImpl.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/web/ExternalPopupMenuTest.cpp ('k') | Source/web/PopupMenuImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698