Index: Source/web/tests/PopupMenuTest.cpp |
diff --git a/Source/web/tests/PopupMenuTest.cpp b/Source/web/tests/PopupMenuTest.cpp |
index df5d615d406639ff46c46d5f51e1cb42e0f023d3..bd2cbbdeca66b0f7623400d43c0b2530ad692ba3 100644 |
--- a/Source/web/tests/PopupMenuTest.cpp |
+++ b/Source/web/tests/PopupMenuTest.cpp |
@@ -33,6 +33,7 @@ |
#include "RuntimeEnabledFeatures.h" |
#include "core/dom/Element.h" |
#include "core/frame/FrameView.h" |
+#include "core/frame/Settings.h" |
#include "core/html/HTMLSelectElement.h" |
#include "core/page/EventHandler.h" |
#include "platform/KeyboardCodes.h" |
@@ -40,6 +41,7 @@ |
#include "platform/PopupMenu.h" |
#include "platform/PopupMenuClient.h" |
#include "platform/graphics/Color.h" |
+#include "platform/scroll/ScrollbarTheme.h" |
#include "public/platform/Platform.h" |
#include "public/platform/WebScreenInfo.h" |
#include "public/platform/WebString.h" |
@@ -57,6 +59,7 @@ |
#include "public/web/WebViewClient.h" |
#include "v8.h" |
#include "web/PopupContainer.h" |
+#include "web/PopupListBox.h" |
#include "web/PopupMenuChromium.h" |
#include "web/WebLocalFrameImpl.h" |
#include "web/WebPopupMenuImpl.h" |
@@ -74,7 +77,7 @@ namespace { |
class TestPopupMenuClient : public PopupMenuClient { |
public: |
// Item at index 0 is selected by default. |
- TestPopupMenuClient() : m_selectIndex(0), m_node(0) { } |
+ TestPopupMenuClient() : m_selectIndex(0), m_node(0), m_listSize(10) { } |
virtual ~TestPopupMenuClient() {} |
virtual void valueChanged(unsigned listIndex, bool fireEvents = true) |
{ |
@@ -111,7 +114,7 @@ public: |
virtual int clientInsetRight() const { return 0; } |
virtual LayoutUnit clientPaddingLeft() const { return 0; } |
virtual LayoutUnit clientPaddingRight() const { return 0; } |
- virtual int listSize() const { return 10; } |
+ virtual int listSize() const { return m_listSize; } |
virtual int selectedIndex() const { return m_selectIndex; } |
virtual void popupDidHide() { } |
virtual bool itemIsSeparator(unsigned listIndex) const { return false; } |
@@ -127,11 +130,13 @@ public: |
void setDisabledIndex(unsigned index) { m_disabledIndexSet.insert(index); } |
void setFocusedNode(Node* node) { m_node = node; } |
+ void setListSize(int listSize) { m_listSize = listSize; } |
private: |
unsigned m_selectIndex; |
std::set<unsigned> m_disabledIndexSet; |
Node* m_node; |
+ int m_listSize; |
}; |
class TestWebWidgetClient : public WebWidgetClient { |
@@ -498,4 +503,49 @@ TEST_F(SelectPopupMenuTest, SelectItemRemoveSelectOnClick) |
EXPECT_STREQ("click", element.innerText().utf8().data()); |
} |
+#if OS(ANDROID) |
+TEST_F(SelectPopupMenuTest, DISABLED_PopupListBoxWithOverlayScrollbarEnabled) |
+#else |
+TEST_F(SelectPopupMenuTest, PopupListBoxWithOverlayScrollbarEnabled) |
+#endif |
+{ |
+ Settings::setMockScrollbarsEnabled(true); |
+ RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true); |
+ EXPECT_TRUE(ScrollbarTheme::theme()->usesOverlayScrollbars()); |
+ registerMockedURLLoad("select_rtl.html"); |
+ loadFrame(mainFrame(), "select_rtl.html"); |
+ |
+ m_popupMenuClient.setFocusedNode(mainFrame()->frame()->document()->focusedElement()); |
+ m_popupMenuClient.setListSize(30); |
+ |
+ showPopup(); |
+ PopupContainer* container = webView()->selectPopup(); |
+ PopupListBox* listBox = container->listBox(); |
+ |
+ EXPECT_EQ(container->width(), listBox->contentsSize().width() + 2); |
+ Settings::setMockScrollbarsEnabled(false); |
+ RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(false); |
+ EXPECT_FALSE(ScrollbarTheme::theme()->usesOverlayScrollbars()); |
+} |
+ |
+#if OS(ANDROID) |
+TEST_F(SelectPopupMenuTest, DISABLED_PopupListBoxWithOverlayScrollbarDisabled) |
+#else |
+TEST_F(SelectPopupMenuTest, PopupListBoxWithOverlayScrollbarDisabled) |
+#endif |
+{ |
+ EXPECT_FALSE(ScrollbarTheme::theme()->usesOverlayScrollbars()); |
+ registerMockedURLLoad("select_rtl.html"); |
+ loadFrame(mainFrame(), "select_rtl.html"); |
+ |
+ m_popupMenuClient.setFocusedNode(mainFrame()->frame()->document()->focusedElement()); |
+ m_popupMenuClient.setListSize(30); |
+ |
+ showPopup(); |
+ PopupContainer* container = webView()->selectPopup(); |
+ PopupListBox* listBox = container->listBox(); |
+ |
+ EXPECT_EQ(container->width(), listBox->contentsSize().width() + ScrollbarTheme::theme()->scrollbarThickness() + 2); |
+} |
+ |
} // namespace |