Add dispatchHwKeyEvent() api to DispatchEventSupport
authorTaejeong Lee <taejeong.lee@samsung.com>
Fri, 7 Jun 2013 10:58:16 +0000 (19:58 +0900)
committerJihoon Chung <jihoon.chung@samsung.com>
Fri, 7 Jun 2013 14:08:07 +0000 (23:08 +0900)
Change-Id: Ibb62ccf24bfb6e652ef4efada3237f766c4145e3

src/dispatch-event/dispatch_event_support.cpp
src/dispatch-event/dispatch_event_support.h

index b73a2fb..24c9f84 100644 (file)
 #ifndef _DISPATCH_EVENT_SUPPORT_CPP_
 #define _DISPATCH_EVENT_SUPPORT_CPP_
 
-#include <string>
-#include <JavaScriptCore/JavaScript.h>
-#include <dpl/log/log.h>
-
 #include "dispatch_event_support.h"
 
 namespace DispatchEventSupport {
@@ -152,5 +148,28 @@ void dispatchStorageEvent(JSContextRef context, const std::string key, const std
     }
 }
 
+void dispatchHwKeyEvent(Evas_Object* ewkView, const std::string key)
+{
+    LogDebug("dispatchHwKeyEvent(" << ewkView << ", " << key << ")");
+
+    if (ewkView != NULL && !key.empty())
+    {
+        std::stringstream script;
+
+        script << "var __event = document.createEvent(\"CustomEvent\");\n"
+               << "__event.initCustomEvent(\"tizenhwkey\", true, true);\n"
+               << "__event.keyName = \"" << key << "\";\n"
+               << "document.dispatchEvent(__event);\n"
+               << "\n"
+               << "for (var i=0; i < window.frames.length; i++)\n"
+               << "{ window.frames[i].document.dispatchEvent(__event); }";
+
+        // just for debugging
+        // LogDebug("script :\n" << script.str());
+
+        ewk_view_script_execute(ewkView, script.str().c_str(), NULL, NULL);
+    }
+}
+
 }
 #endif //_DISPATCH_EVENT_SUPPORT_CPP_
index a267e2c..df74b4b 100644 (file)
 #ifndef _DISPATCH_EVENT_SUPPORT_H_
 #define _DISPATCH_EVENT_SUPPORT_H_
 
+#include <string>
+#include <dpl/log/log.h>
+#include <EWebKit2.h>
+#include <JavaScriptCore/JavaScript.h>
+
 namespace DispatchEventSupport {
 
 void dispatchAppServiceEvent(JSContextRef context, const float scale, const std::string bundle);
 void dispatchSoftKeyboardChangeEvent(JSContextRef context, const std::string state, const int width, const int height);
 void dispatchStorageEvent(JSContextRef context, const std::string key, const std::string oldValue, const std::string newValue, const std::string url);
-
+void dispatchHwKeyEvent(Evas_Object* ewkView, const std::string key);
 }
 #endif //_DISPATCH_EVENT_SUPPORT_H_