Support fast opening of PD
[platform/framework/web/web-provider.git] / src / Core / View / injection.js
1 // set javascript objects for Web APIs of Tizen appwidget
2 if (typeof window.tizen == 'undefined') {
3     console.log("window.tizen object not exists");
4     window.tizen = new Object();
5     window.tizen.appwidget = new Object();
6 }
7
8 // For future, only window.appwidget will be used
9 window.appwidget = new Object();
10
11 // these are functions for overriding standard javascript functions regarding event
12 var original_addEventListener = window.addEventListener;
13 var original_removeEventListener = window.removeEventListener;
14
15 // this variable is responsible to keep information of appwidget evetns
16 var appWidgetEvents = {};
17
18 // define event structure for appwidget
19 window.AppWidgetEventInfo = function(event, callback) {
20     this.event = event;
21     this.callback = callback;
22 };
23
24 window.addEventListener = function(event, callback, capture) {
25     var e = event.toLowerCase();
26     if (typeof appWidgetEvents[e] != 'undefined') {
27         appWidgetEvents[e].callback = callback;
28     } else {
29         original_addEventListener.call(window, event, callback, capture);
30     }
31 };
32
33 window.removeEventListener = function(event, callback, capture) {
34     var e = event.toLowerCase();
35     if (typeof appWidgetEvents[e] != "undefined") {
36         appWidgetEvents[e].callback = "null";
37     } else {
38         original_removeEventListener.call(window, event, callback, capture);
39     }
40 };
41
42 window.appwidget.sendMessageToBox = function(message) {
43     window.location.href = "box://send-message-to-box?message=" + message;
44 }
45
46 window.appwidget.sendMessageToPd = function(message) {
47     window.location.href = "box://send-message-to-pd?message=" + message;
48 }
49
50 var webprovider = {
51     // define specific function for registering appwidget event
52     registerAppWidgetEvent: function(event) {
53         return (appWidgetEvents[event] = new AppWidgetEventInfo(event, "null"));
54     },
55
56     // define specific function for firing registered appwidget event
57     fireAppWidgetEvent: function(event, data) {
58         // this is called by web-provider, which is native code
59         if (typeof appWidgetEvents[event] != 'undefined') {
60             setTimeout(function() {
61                 appWidgetEvents[event].callback(data);
62             }, 0);
63             console.log("fire appwidget event: " + event);
64         } else {
65             console.log("unknown appwidget event: " + event);
66         }
67     },
68 }
69
70 // register custom events for appwidget
71 webprovider.registerAppWidgetEvent("pdmessage");
72 webprovider.registerAppWidgetEvent("boxmessage");
73
74 // Define appwidget APIs
75 // window.tizen.appwidget should be changed to window.appwidget
76 //
77 //
78 window.tizen.appwidget.reload = function() {
79     window.location.href = "box://reload";
80 }
81
82 window.tizen.appwidget.changePeriod = function(period) {
83     switch (arguments.length) {
84     case 0:
85         window.location.href = "box://change-period";
86         break;
87     case 1:
88         window.location.href = "box://change-period?period=" + period;
89         break;
90     default:
91         window.location.href = "box://change-period";
92         break;
93     }
94 }
95
96 window.tizen.appwidget.launchBrowser = function(url) {
97     window.location.href = "box://launch-browser?url=" + url;
98 }
99
100 window.tizen.appwidget.scrollStart = function() {
101     window.location.href = "box://scroll-start";
102 }
103
104 window.tizen.appwidget.scrollStop = function() {
105     window.location.href = "box://scroll-stop";
106 }