Update our <select> to work with the latest webkit.
Remove a webkit change that makes some functions public for our
use. Instead, use a pointer to a base class where those functions
are already public. In one case where a function has been removed,
call another function which behaves the same.
diff --git a/WebCore/html/HTMLSelectElement.h b/WebCore/html/HTMLSelectElement.h
index df7832c..9ecd81c 100644
--- a/WebCore/html/HTMLSelectElement.h
+++ b/WebCore/html/HTMLSelectElement.h
@@ -105,15 +105,8 @@
virtual RenderObject* createRenderer(RenderArena*, RenderStyle *);
virtual bool appendFormData(FormDataList&, bool);
-#if PLATFORM(ANDROID)
-public:
virtual int listToOptionIndex(int listIndex) const;
virtual int optionToListIndex(int optionIndex) const;
-private:
-#else
- virtual int listToOptionIndex(int listIndex) const;
- virtual int optionToListIndex(int optionIndex) const;
-#endif
virtual void reset();
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index ebe5d23..8b8d315 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -1449,11 +1449,12 @@
if (!m_select || !CacheBuilder::validNode(m_viewImpl->m_mainFrame,
m_frame, m_select))
return;
- // FIXME: scroggo, listToOptionIndex was made private in HTMLSelectElement.
- int optionIndex = m_select->listToOptionIndex(index);
+ // Use a pointer to HTMLSelectElement's superclass, where
+ // listToOptionIndex is public.
+ SelectElement* selectElement = m_select;
+ int optionIndex = selectElement->listToOptionIndex(index);
m_select->setSelectedIndex(optionIndex, true, false);
- // FIXME: scroggo, onChange is removed from HTMLSelectElement.
- // m_select->onChange();
+ m_select->dispatchFormControlChangeEvent();
m_viewImpl->contentInvalidate(m_select->getRect());
}
@@ -1492,8 +1493,7 @@
option->setSelectedState(false);
}
}
- // FIXME scroggo, onChange is removed from HTMLSelectElement
- // m_select->onChange();
+ m_select->dispatchFormControlChangeEvent();
m_viewImpl->contentInvalidate(m_select->getRect());
}
private:
@@ -1697,9 +1697,12 @@
}
}
WebCoreReply* reply = new ListBoxReply(select, select->document()->frame(), this);
+ // Use a pointer to HTMLSelectElement's superclass, where
+ // optionToListIndex is public.
+ SelectElement* selectElement = select;
listBoxRequest(reply, names.begin(), size, enabledArray.begin(), enabledArray.count(),
multiple, selectedArray.begin(), multiple ? selectedArray.count() :
- select->optionToListIndex(select->selectedIndex()));
+ selectElement->optionToListIndex(select->selectedIndex()));
return true;
}
}