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

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: Created 6 years 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
Index: Source/web/PopupMenuImpl.h
diff --git a/Source/web/PopupMenuChromium.h b/Source/web/PopupMenuImpl.h
similarity index 58%
rename from Source/web/PopupMenuChromium.h
rename to Source/web/PopupMenuImpl.h
index e8ef543eb21110d49650251ff8d7bc4eda5fc6aa..26a06e020cb0e465e12e9b63e2f49a92b1954174 100644
--- a/Source/web/PopupMenuChromium.h
+++ b/Source/web/PopupMenuImpl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, Google Inc. All rights reserved.
+ * Copyright (C) 2012 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -28,39 +28,58 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef PopupMenuChromium_h
-#define PopupMenuChromium_h
+#ifndef PopupMenuImpl_h
+#define PopupMenuImpl_h
+#include "core/page/PagePopupClient.h"
#include "platform/PopupMenu.h"
-#include "wtf/RefPtr.h"
+#include "platform/PopupMenuClient.h"
namespace blink {
-class LocalFrame;
-class FrameView;
-class PopupContainer;
-class PopupMenuClient;
+class ChromeClientImpl;
+class PagePopup;
+class HTMLElement;
+class HTMLHRElement;
+class HTMLOptGroupElement;
+class HTMLOptionElement;
-class PopupMenuChromium final : public PopupMenu {
+class PopupMenuImpl final : public PopupMenu, public PagePopupClient {
public:
- PopupMenuChromium(LocalFrame&, PopupMenuClient*);
- virtual ~PopupMenuChromium();
+ static PassRefPtr<PopupMenuImpl> create(ChromeClientImpl*, PopupMenuClient*);
+ virtual ~PopupMenuImpl();
+ virtual void trace(Visitor*) override;
virtual void show(const FloatQuad& controlPosition, const IntSize& controlSize, int index) override;
virtual void hide() override;
virtual void updateFromElement() override;
virtual void disconnectClient() override;
- virtual void trace(Visitor*) override;
+ void dispose();
private:
- void dispose();
+ PopupMenuImpl(ChromeClientImpl*, PopupMenuClient*);
+
+ void addOption(HTMLOptionElement&, SharedBuffer*);
+ void addOptGroup(HTMLOptGroupElement&, SharedBuffer*);
+ void addSeparator(HTMLHRElement&, SharedBuffer*);
+ void addElementStyle(HTMLElement&, SharedBuffer*);
+
+ // PagePopupClient functions:
+ virtual IntSize contentSize() override;
+ virtual void writeDocument(SharedBuffer*) override;
+ virtual void didWriteDocument(Document*) override;
+ virtual void setValueAndClosePopup(int, const String&) override;
+ virtual void setValue(const String&) override;
+ virtual void closePopup() override;
+ virtual Element& ownerElement() override;
+ virtual void didClosePopup() override;
- PopupMenuClient* m_popupClient;
- RefPtrWillBeMember<FrameView> m_frameView;
- RefPtrWillBeMember<PopupContainer> m_popup;
+ ChromeClientImpl* m_chromeClient;
+ PopupMenuClient* m_client;
+ PagePopup* m_popup;
};
-} // namespace blink
+}
-#endif
+#endif // PopupMenuImpl_h

Powered by Google App Engine
This is Rietveld 408576698