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

Reply via email to