Title: [135652] trunk/Source/WebKit2
- Revision
- 135652
- Author
- [email protected]
- Date
- 2012-11-24 08:46:03 -0800 (Sat, 24 Nov 2012)
Log Message
[EFL][WK2] Check errors in EwkView callbacks usage at compile time
https://bugs.webkit.org/show_bug.cgi?id=103177
Patch by Mikhail Pozdnyakov <[email protected]> on 2012-11-24
Reviewed by Kenneth Rohde Christiansen.
Errors in EwkView callbacks usage are now checked at compile time.
* UIProcess/API/efl/EwkViewCallbacks.h:
(CallBack):
(EwkViewCallbacks::CallBack::CallBack):
(EwkViewCallbacks::CallBack::call):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (135651 => 135652)
--- trunk/Source/WebKit2/ChangeLog 2012-11-24 15:32:25 UTC (rev 135651)
+++ trunk/Source/WebKit2/ChangeLog 2012-11-24 16:46:03 UTC (rev 135652)
@@ -1,3 +1,17 @@
+2012-11-24 Mikhail Pozdnyakov <[email protected]>
+
+ [EFL][WK2] Check errors in EwkView callbacks usage at compile time
+ https://bugs.webkit.org/show_bug.cgi?id=103177
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Errors in EwkView callbacks usage are now checked at compile time.
+
+ * UIProcess/API/efl/EwkViewCallbacks.h:
+ (CallBack):
+ (EwkViewCallbacks::CallBack::CallBack):
+ (EwkViewCallbacks::CallBack::call):
+
2012-11-23 Sheriff Bot <[email protected]>
Unreviewed, rolling out r135575.
Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h (135651 => 135652)
--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h 2012-11-24 15:32:25 UTC (rev 135651)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h 2012-11-24 16:46:03 UTC (rev 135652)
@@ -96,48 +96,56 @@
#endif
};
-template<typename T>
-inline bool callbackArgumentsExpected()
-{
- return true;
-}
+template <CallbackType>
+struct CallBackInfo;
-template<>
-inline bool callbackArgumentsExpected<void>()
-{
- return false;
-}
+template <CallbackType callbackType, typename ArgType = typename CallBackInfo<callbackType>::Type>
+class CallBack {
+public:
+ explicit CallBack(Evas_Object* view)
+ : m_view(view)
+ {
+ ASSERT(m_view);
+ }
-template <CallbackType>
-struct CallBackInfo {
- typedef void* Type;
+ void call(ArgType* argument)
+ {
+ evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), static_cast<void*>(argument));
+ }
- static inline const char* name()
+private:
+ Evas_Object* m_view;
+};
+
+template <CallbackType callbackType>
+class CallBack <callbackType, void> {
+public:
+ explicit CallBack(Evas_Object* view)
+ : m_view(view)
{
- ASSERT_NOT_REACHED();
- return "";
+ ASSERT(m_view);
}
+
+ void call()
+ {
+ evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), 0);
+ }
+
+private:
+ Evas_Object* m_view;
};
template <CallbackType callbackType>
-class CallBack {
+class CallBack <callbackType, char> {
public:
- typedef typename CallBackInfo<callbackType>::Type ArgType;
-
explicit CallBack(Evas_Object* view)
: m_view(view)
{
ASSERT(m_view);
}
- void call(ArgType* argument = 0)
+ void call(char* argument)
{
- if (argument && !callbackArgumentsExpected<ArgType>()) {
- CRITICAL("should not pass arguments for this callback!");
- ASSERT_NOT_REACHED();
- return;
- }
-
evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), static_cast<void*>(argument));
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes