| Index: Source/core/html/HTMLSelectElement.cpp | 
| diff --git a/Source/core/html/HTMLSelectElement.cpp b/Source/core/html/HTMLSelectElement.cpp | 
| index eaed769fd7c3b461c72fbcee405535bbd3b1f196..e05c7b801d98ad5e4418231d62e48c989be29774 100644 | 
| --- a/Source/core/html/HTMLSelectElement.cpp | 
| +++ b/Source/core/html/HTMLSelectElement.cpp | 
| @@ -203,13 +203,19 @@ void HTMLSelectElement::add(HTMLElement* element, HTMLElement* before, Exception | 
| // Make sure the element is ref'd and deref'd so we don't leak it. | 
| RefPtr<HTMLElement> protectNewChild(element); | 
|  | 
| -    if (!element || !(isHTMLOptionElement(element) || isHTMLHRElement(element))) | 
| +    if (!element || !(isHTMLOptionElement(element) || isHTMLOptGroupElement(element) || isHTMLHRElement(element))) | 
| return; | 
|  | 
| insertBefore(element, before, exceptionState); | 
| setNeedsValidityCheck(); | 
| } | 
|  | 
| +void HTMLSelectElement::addBeforeOptionAtIndex(HTMLElement* element, unsigned beforeIndex, ExceptionState& exceptionState) | 
| +{ | 
| +    HTMLElement* beforeElement = toHTMLElement(options()->item(beforeIndex)); | 
| +    add(element, beforeElement, exceptionState); | 
| +} | 
| + | 
| void HTMLSelectElement::remove(int optionIndex) | 
| { | 
| int listIndex = optionToListIndex(optionIndex); | 
|  |