Index: content/renderer/external_popup_menu_browsertest.cc |
diff --git a/content/renderer/external_popup_menu_browsertest.cc b/content/renderer/external_popup_menu_browsertest.cc |
index a0a6a90c8f373354d170c5fe6757df2a4dcba85d..c29306c44edae1fbdd09b3a411631f760dc1af74 100644 |
--- a/content/renderer/external_popup_menu_browsertest.cc |
+++ b/content/renderer/external_popup_menu_browsertest.cc |
@@ -145,4 +145,44 @@ TEST_F(ExternalPopupMenuRemoveTest, RemoveOnChange) { |
EXPECT_FALSE(SimulateElementClick(kSelectID)); |
} |
+class ExternalPopupMenuDisplayNoneTest : public ExternalPopupMenuTest { |
+ public: |
+ ExternalPopupMenuDisplayNoneTest() {} |
+ |
+ virtual void SetUp() { |
+ RenderViewTest::SetUp(); |
+ // We need to set this explictly as RenderMain is not run. |
+ blink::WebView::setUseExternalPopupMenus(true); |
+ |
+ std::string html = "<select id='mySelect'>" |
+ " <option value='zero'>zero</option>" |
+ " <optgroup label='hide' style='display: none'>" |
+ " <option value='one'>one</option>" |
+ " </optgroup>" |
+ " <option value='two'>two</option>" |
+ " <option value='three'>three</option>" |
+ " <option value='four'>four</option>" |
+ " <option value='five'>five</option>" |
+ "</select>"; |
+ // Load the test page. |
+ LoadHTML(html.c_str()); |
+ |
+ // Set a minimum size and give focus so simulated events work. |
+ view()->webwidget()->resize(blink::WebSize(500, 500)); |
+ view()->webwidget()->setFocus(true); |
+ } |
+ |
+}; |
+ |
+TEST_F(ExternalPopupMenuDisplayNoneTest, SelectItem) { |
+ // Click the text field once to show the popup. |
+ EXPECT_TRUE(SimulateElementClick(kSelectID)); |
+ |
+ // Select index 1 item. This should select item with index 2, |
+ // skipping the item with 'display: none' |
+ view()->OnSelectPopupMenuItem(1); |
+ |
+ EXPECT_EQ(2,GetSelectedIndex()); |
+} |
+ |
} // namespace content |