TEST_F(ExternalPopupMenuTest, PopupAccountsForVisualViewportOffset) { registerMockedURLLoad("select_mid_screen.html"); loadFrame("select_mid_screen.html"); webView()->resize(WebSize(100, 100)); webView()->updateAllLifecyclePhases(); HTMLSelectElement* select = toHTMLSelectElement(mainFrame()->frame()->document()->getElementById("select")); LayoutMenuList* menuList = toLayoutMenuList(select->layoutObject()); ASSERT_TRUE(menuList); VisualViewport& visualViewport = webView()->page()->frameHost().visualViewport(); IntRect rectInDocument = menuList->absoluteBoundingBoxRect(); webView()->setPageScaleFactor(2); IntPoint scrollDelta(20, 30); visualViewport.move(scrollDelta); select->showPopup(); EXPECT_EQ(rectInDocument.x() - scrollDelta.x(), client().shownBounds().x); EXPECT_EQ(rectInDocument.y() - scrollDelta.y(), client().shownBounds().y); }
TEST_F(HTMLSelectElementTest, PopupIsVisible) { document().documentElement()->setInnerHTML("<select><option>o1</option></select>", ASSERT_NO_EXCEPTION); document().view()->updateAllLifecyclePhases(); HTMLSelectElement* select = toHTMLSelectElement(document().body()->firstChild()); ASSERT(select); EXPECT_FALSE(select->popupIsVisible()); select->showPopup(); EXPECT_TRUE(select->popupIsVisible()); document().detach(); EXPECT_FALSE(select->popupIsVisible()); }
TEST_F(ExternalPopupMenuTest, DidAcceptIndicesClearSelect) { registerMockedURLLoad("select.html"); loadFrame("select.html"); HTMLSelectElement* select = toHTMLSelectElement(mainFrame()->frame()->document()->getElementById("select")); LayoutMenuList* menuList = toLayoutMenuList(select->layoutObject()); ASSERT_TRUE(menuList); select->showPopup(); ASSERT_TRUE(select->popupIsVisible()); WebExternalPopupMenuClient* client = static_cast<ExternalPopupMenu*>(select->popup()); WebVector<int> indices; client->didAcceptIndices(indices); EXPECT_FALSE(select->popupIsVisible()); EXPECT_EQ(-1, select->selectedIndex()); }
TEST_F(ExternalPopupMenuTest, DidAcceptIndex) { registerMockedURLLoad("select.html"); loadFrame("select.html"); HTMLSelectElement* select = toHTMLSelectElement(mainFrame()->frame()->document()->getElementById("select")); LayoutMenuList* menuList = toLayoutMenuList(select->layoutObject()); ASSERT_TRUE(menuList); select->showPopup(); ASSERT_TRUE(select->popupIsVisible()); WebExternalPopupMenuClient* client = static_cast<ExternalPopupMenu*>(select->popup()); client->didAcceptIndex(2); EXPECT_FALSE(select->popupIsVisible()); ASSERT_STREQ("2", menuList->text().utf8().data()); EXPECT_EQ(2, select->selectedIndex()); }