RenderPopupMenu.cpp [plain text]
#include "config.h"
#include "RenderPopupMenu.h"
#include "HTMLNames.h"
#include "HTMLOptionElement.h"
#include "HTMLOptGroupElement.h"
#include "HTMLSelectElement.h"
namespace WebCore {
using namespace HTMLNames;
RenderPopupMenu::RenderPopupMenu(Node* element, RenderMenuList* menuList)
: RenderBlock(element)
, m_menuList(menuList)
{
}
void RenderPopupMenu::populate()
{
ASSERT(menuList());
HTMLSelectElement* select = static_cast<HTMLSelectElement*>(menuList()->node());
if (!select)
return;
const Vector<HTMLElement*>& items = select->listItems();
size_t size = items.size();
for (size_t i = 0; i < size; ++i) {
HTMLElement* element = items[i];
if (element->hasTagName(optionTag))
addOption(static_cast<HTMLOptionElement*>(element));
else if (element->hasTagName(optgroupTag))
addGroupLabel(static_cast<HTMLOptGroupElement*>(element));
else if (element->hasTagName(hrTag))
addSeparator();
else
ASSERT(0);
}
}
}