Support ready event fired when appwidget objects are prepared
authorYunchan Cho <yunchan.cho@samsung.com>
Fri, 31 May 2013 02:18:16 +0000 (11:18 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Mon, 3 Jun 2013 11:33:52 +0000 (20:33 +0900)
[Issue#] N/A
[Problem] somtimes web content of dynamic box can't call appwidget functions
[Cause] appwidget objects are 'undefined' objects befere they are loaded.
        So web contents have to use appwidget objects after they are fully loaded.
[Solution] For this, ready event named as 'appwidgetready' are provided.
           web content of box or pd can trigger this event for knowing the time that objects are fully loaded.
           And for knowing such objects were already loaded, it's possible as checking 'window.appwidget' object is not 'undefined'

Change-Id: I77d66d68b2335b34702add9fa43922775dc55414

src/Core/View/injection.js

index 3b50cc4..0780755 100644 (file)
@@ -1,8 +1,10 @@
 // set javascript objects for Web APIs of Tizen appwidget
+var appTizenObject = 0;
 if (typeof window.tizen == 'undefined') {
-    console.log("window.tizen object not exists");
     window.tizen = new Object();
     window.tizen.appwidget = new Object();
+} else {
+    appTizenObject = 1;
 }
 
 // For future, only window.appwidget will be used
@@ -41,7 +43,7 @@ window.removeEventListener = function(event, callback, capture) {
 
 window.appwidget.reload = function() {
     window.location.href = "box://reload";
-}
+};
 
 window.appwidget.changePeriod = function(period) {
     switch (arguments.length) {
@@ -55,27 +57,27 @@ window.appwidget.changePeriod = function(period) {
         window.location.href = "box://change-period";
         break;
     }
-}
+};
 
 window.appwidget.launchBrowser = function(url) {
     window.location.href = "box://launch-browser?url=" + url;
-}
+};
 
 window.appwidget.scrollStart = function() {
     window.location.href = "box://scroll-start";
-}
+};
 
 window.appwidget.scrollStop = function() {
     window.location.href = "box://scroll-stop";
-}
+};
 
 window.appwidget.sendMessageToBox = function(message) {
     window.location.href = "box://send-message-to-box?message=" + message;
-}
+};
 
 window.appwidget.sendMessageToPd = function(message) {
     window.location.href = "box://send-message-to-pd?message=" + message;
-}
+};
 
 var webprovider = {
     // define specific function for registering appwidget event
@@ -95,15 +97,22 @@ var webprovider = {
             console.log("unknown appwidget event: " + event);
         }
     },
-}
+};
 
 // register custom events for appwidget
 webprovider.registerAppWidgetEvent("pdmessage");
 webprovider.registerAppWidgetEvent("boxmessage");
 
 // These objects will be deprecated soon
-window.tizen.appwidget.reload = window.appwidget.reload;
-window.tizen.appwidget.changePeriod = window.appwidget.changePeriod;
-window.tizen.appwidget.launchBrowser = window.appwidget.launchBrowser;
-window.tizen.appwidget.scrollStart = window.appwidget.scrollStart;
-window.tizen.appwidget.scrollStop = window.appwidget.scrollStop;
+if (!appTizenObject) {
+    window.tizen.appwidget.reload = window.appwidget.reload;
+    window.tizen.appwidget.changePeriod = window.appwidget.changePeriod;
+    window.tizen.appwidget.launchBrowser = window.appwidget.launchBrowser;
+    window.tizen.appwidget.scrollStart = window.appwidget.scrollStart;
+    window.tizen.appwidget.scrollStop = window.appwidget.scrollStop;
+}
+
+// If every functionalities of appwidget are initialized, fire appwidget ready event
+var readyevent = document.createEvent("CustomEvent");
+readyevent.initCustomEvent("appwidgetready", true, true);
+document.dispatchEvent(readyevent);