Title: [135660] trunk/Source/WebKit2
Revision
135660
Author
[email protected]
Date
2012-11-24 18:18:08 -0800 (Sat, 24 Nov 2012)

Log Message

[EFL][WK2] Stop the mess with DECLARE_EWK_VIEW_CALLBACK arg type definition
https://bugs.webkit.org/show_bug.cgi?id=103187

Patch by Mikhail Pozdnyakov <[email protected]> on 2012-11-24
Reviewed by Kenneth Rohde Christiansen.

Now the client should pass to DECLARE_EWK_VIEW_CALLBACK macro exacly the
same arg type s/he wants to have in the Ewk_View callback.

* UIProcess/API/efl/EwkViewCallbacks.h:
(EvasObjectHolder):
(EwkViewCallbacks::EvasObjectHolder::EvasObjectHolder):
(EwkViewCallbacks):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (135659 => 135660)


--- trunk/Source/WebKit2/ChangeLog	2012-11-24 23:05:07 UTC (rev 135659)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-25 02:18:08 UTC (rev 135660)
@@ -1,5 +1,20 @@
 2012-11-24  Mikhail Pozdnyakov  <[email protected]>
 
+        [EFL][WK2] Stop the mess with DECLARE_EWK_VIEW_CALLBACK arg type definition
+        https://bugs.webkit.org/show_bug.cgi?id=103187
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Now the client should pass to DECLARE_EWK_VIEW_CALLBACK macro exacly the 
+        same arg type s/he wants to have in the Ewk_View callback.
+
+        * UIProcess/API/efl/EwkViewCallbacks.h:
+        (EvasObjectHolder):
+        (EwkViewCallbacks::EvasObjectHolder::EvasObjectHolder):
+        (EwkViewCallbacks):
+
+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
 

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h (135659 => 135660)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h	2012-11-24 23:05:07 UTC (rev 135659)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h	2012-11-25 02:18:08 UTC (rev 135660)
@@ -99,68 +99,55 @@
 template <CallbackType>
 struct CallBackInfo;
 
-template <CallbackType callbackType, typename ArgType = typename CallBackInfo<callbackType>::Type>
-class CallBack {
-public:
-    explicit CallBack(Evas_Object* view)
-        : m_view(view)
+class EvasObjectHolder {
+protected:
+    explicit EvasObjectHolder(Evas_Object* object)
+        : m_object(object)
     {
-        ASSERT(m_view);
+        ASSERT(m_object);
     }
 
-    void call(ArgType* argument)
+    Evas_Object* m_object;
+};
+
+template <CallbackType callbackType, typename ArgType = typename CallBackInfo<callbackType>::Type>
+struct CallBack: public EvasObjectHolder {
+    explicit CallBack(Evas_Object* view) : EvasObjectHolder(view) { }
+
+    void call(ArgType argument)
     {
-        evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), static_cast<void*>(argument));
+        evas_object_smart_callback_call(m_object, CallBackInfo<callbackType>::name(), static_cast<void*>(argument));
     }
-
-private:
-    Evas_Object* m_view;
 };
 
 template <CallbackType callbackType>
-class CallBack <callbackType, void> {
-public:
-    explicit CallBack(Evas_Object* view)
-        : m_view(view)
-    {
-        ASSERT(m_view);
-    }
+struct CallBack <callbackType, void> : public EvasObjectHolder {
+    explicit CallBack(Evas_Object* view) : EvasObjectHolder(view) { }
 
     void call()
     {
-        evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), 0);
+        evas_object_smart_callback_call(m_object, CallBackInfo<callbackType>::name(), 0);
     }
-
-private:
-    Evas_Object* m_view;
 };
 
 template <CallbackType callbackType>
-class CallBack <callbackType, char> {
-public:
-    explicit CallBack(Evas_Object* view)
-        : m_view(view)
-    {
-        ASSERT(m_view);
-    }
+struct CallBack <callbackType, const char*> : public EvasObjectHolder {
+    explicit CallBack(Evas_Object* view) : EvasObjectHolder(view) { }
 
-    void call(char* argument)
+    void call(const char* arg)
     {
-        evas_object_smart_callback_call(m_view, CallBackInfo<callbackType>::name(), static_cast<void*>(argument));
+        evas_object_smart_callback_call(m_object, CallBackInfo<callbackType>::name(), const_cast<char*>(arg));
     }
 
     void call(const String& arg)
     {
-        call(const_cast<char*>(arg.utf8().data()));
+        call(arg.utf8().data());
     }
 
     void call(const WKEinaSharedString& arg)
     {
-        call(const_cast<char*>(static_cast<const char*>(arg)));
+        call(static_cast<const char*>(arg));
     }
-
-private:
-    Evas_Object* m_view;
 };
 
 #define DECLARE_EWK_VIEW_CALLBACK(callbackType, string, type) \
@@ -171,45 +158,45 @@
 }
 
 // Note: type 'void' means that no arguments are expected.
-DECLARE_EWK_VIEW_CALLBACK(AuthenticationRequest, "authentication,request", Ewk_Auth_Request);
+DECLARE_EWK_VIEW_CALLBACK(AuthenticationRequest, "authentication,request", Ewk_Auth_Request*);
 DECLARE_EWK_VIEW_CALLBACK(BackForwardListChange, "back,forward,list,changed", void);
 DECLARE_EWK_VIEW_CALLBACK(CancelVibration, "cancel,vibration", void);
-DECLARE_EWK_VIEW_CALLBACK(DownloadJobCancelled, "download,cancelled", Ewk_Download_Job);
-DECLARE_EWK_VIEW_CALLBACK(DownloadJobFailed, "download,failed", Ewk_Download_Job_Error);
-DECLARE_EWK_VIEW_CALLBACK(DownloadJobFinished, "download,finished", Ewk_Download_Job);
-DECLARE_EWK_VIEW_CALLBACK(DownloadJobRequested, "download,request", Ewk_Download_Job);
-DECLARE_EWK_VIEW_CALLBACK(FileChooserRequest, "file,chooser,request", Ewk_File_Chooser_Request);
-DECLARE_EWK_VIEW_CALLBACK(NewFormSubmissionRequest, "form,submission,request", Ewk_Form_Submission_Request);
+DECLARE_EWK_VIEW_CALLBACK(DownloadJobCancelled, "download,cancelled", Ewk_Download_Job*);
+DECLARE_EWK_VIEW_CALLBACK(DownloadJobFailed, "download,failed", Ewk_Download_Job_Error*);
+DECLARE_EWK_VIEW_CALLBACK(DownloadJobFinished, "download,finished", Ewk_Download_Job*);
+DECLARE_EWK_VIEW_CALLBACK(DownloadJobRequested, "download,request", Ewk_Download_Job*);
+DECLARE_EWK_VIEW_CALLBACK(FileChooserRequest, "file,chooser,request", Ewk_File_Chooser_Request*);
+DECLARE_EWK_VIEW_CALLBACK(NewFormSubmissionRequest, "form,submission,request", Ewk_Form_Submission_Request*);
 DECLARE_EWK_VIEW_CALLBACK(IconChanged, "icon,changed", void);
-DECLARE_EWK_VIEW_CALLBACK(LoadError, "load,error", Ewk_Error);
+DECLARE_EWK_VIEW_CALLBACK(LoadError, "load,error", Ewk_Error*);
 DECLARE_EWK_VIEW_CALLBACK(LoadFinished, "load,finished", void);
-DECLARE_EWK_VIEW_CALLBACK(LoadProgress, "load,progress", double);
-DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadFailed, "load,provisional,failed", Ewk_Error);
+DECLARE_EWK_VIEW_CALLBACK(LoadProgress, "load,progress", double*);
+DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadFailed, "load,provisional,failed", Ewk_Error*);
 DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadRedirect, "load,provisional,redirect", void);
 DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadStarted, "load,provisional,started", void);
-DECLARE_EWK_VIEW_CALLBACK(MenuBarVisible, "menubar,visible", bool);
-DECLARE_EWK_VIEW_CALLBACK(NavigationPolicyDecision, "policy,decision,navigation", Ewk_Navigation_Policy_Decision);
-DECLARE_EWK_VIEW_CALLBACK(NewWindowPolicyDecision, "policy,decision,new,window", Ewk_Navigation_Policy_Decision);
-DECLARE_EWK_VIEW_CALLBACK(ResourceLoadStarted, "resource,request,new", Ewk_Resource_Request);
-DECLARE_EWK_VIEW_CALLBACK(ResourceLoadResponse, "resource,request,response", Ewk_Resource_Load_Response);
-DECLARE_EWK_VIEW_CALLBACK(ResourceLoadFailed, "resource,request,failed", Ewk_Resource_Load_Error);
-DECLARE_EWK_VIEW_CALLBACK(ResourceLoadFinished, "resource,request,finished", Ewk_Resource);
-DECLARE_EWK_VIEW_CALLBACK(ResourceRequestSent, "resource,request,sent", Ewk_Resource_Request);
-DECLARE_EWK_VIEW_CALLBACK(StatusBarVisible, "statusbar,visible", bool);
-DECLARE_EWK_VIEW_CALLBACK(TextFound, "text,found", unsigned);
-DECLARE_EWK_VIEW_CALLBACK(TitleChange, "title,changed", char);
-DECLARE_EWK_VIEW_CALLBACK(ToolbarVisible, "toolbar,visible", bool);
+DECLARE_EWK_VIEW_CALLBACK(MenuBarVisible, "menubar,visible", bool*);
+DECLARE_EWK_VIEW_CALLBACK(NavigationPolicyDecision, "policy,decision,navigation", Ewk_Navigation_Policy_Decision*);
+DECLARE_EWK_VIEW_CALLBACK(NewWindowPolicyDecision, "policy,decision,new,window", Ewk_Navigation_Policy_Decision*);
+DECLARE_EWK_VIEW_CALLBACK(ResourceLoadStarted, "resource,request,new", Ewk_Resource_Request*);
+DECLARE_EWK_VIEW_CALLBACK(ResourceLoadResponse, "resource,request,response", Ewk_Resource_Load_Response*);
+DECLARE_EWK_VIEW_CALLBACK(ResourceLoadFailed, "resource,request,failed", Ewk_Resource_Load_Error*);
+DECLARE_EWK_VIEW_CALLBACK(ResourceLoadFinished, "resource,request,finished", Ewk_Resource*);
+DECLARE_EWK_VIEW_CALLBACK(ResourceRequestSent, "resource,request,sent", Ewk_Resource_Request*);
+DECLARE_EWK_VIEW_CALLBACK(StatusBarVisible, "statusbar,visible", bool*);
+DECLARE_EWK_VIEW_CALLBACK(TextFound, "text,found", unsigned*);
+DECLARE_EWK_VIEW_CALLBACK(TitleChange, "title,changed", const char*);
+DECLARE_EWK_VIEW_CALLBACK(ToolbarVisible, "toolbar,visible", bool*);
 DECLARE_EWK_VIEW_CALLBACK(TooltipTextUnset, "tooltip,text,unset", void);
-DECLARE_EWK_VIEW_CALLBACK(TooltipTextSet, "tooltip,text,set", char);
-DECLARE_EWK_VIEW_CALLBACK(URLChanged, "url,changed", char);
-DECLARE_EWK_VIEW_CALLBACK(Vibrate, "vibrate", uint64_t);
-DECLARE_EWK_VIEW_CALLBACK(WebProcessCrashed, "webprocess,crashed", bool);
-DECLARE_EWK_VIEW_CALLBACK(WindowResizable, "window,resizable", bool);
+DECLARE_EWK_VIEW_CALLBACK(TooltipTextSet, "tooltip,text,set", const char*);
+DECLARE_EWK_VIEW_CALLBACK(URLChanged, "url,changed", const char*);
+DECLARE_EWK_VIEW_CALLBACK(Vibrate, "vibrate", uint64_t*);
+DECLARE_EWK_VIEW_CALLBACK(WebProcessCrashed, "webprocess,crashed", bool*);
+DECLARE_EWK_VIEW_CALLBACK(WindowResizable, "window,resizable", bool*);
 #if ENABLE(WEB_INTENTS)
-DECLARE_EWK_VIEW_CALLBACK(IntentRequest, "intent,request,new", Ewk_Intent);
+DECLARE_EWK_VIEW_CALLBACK(IntentRequest, "intent,request,new", Ewk_Intent*);
 #endif
 #if ENABLE(WEB_INTENTS_TAG)
-DECLARE_EWK_VIEW_CALLBACK(IntentServiceRegistration, "intent,service,register", Ewk_Intent_Service);
+DECLARE_EWK_VIEW_CALLBACK(IntentServiceRegistration, "intent,service,register", Ewk_Intent_Service*);
 #endif
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to