Mercurial > summit-idp
annotate static-files/js/api.js @ 58:422fcf9774b1
added js, css, and img subdirectories to static-files.
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Mon, 28 Jun 2010 16:51:13 -0700 |
parents | static-files/api.js@fe5a2f26787d |
children | ce0fb8a780a4 |
rev | line source |
---|---|
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
1 ( |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
2 // Set up the public API for the Summit IDP. |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
3 function(window) { |
54
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
4 // parseUri 1.2.2 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
5 // (c) Steven Levithan <stevenlevithan.com> |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
6 // MIT License |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
7 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
8 function parseUri (str) { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
9 var o = parseUri.options, |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
10 m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
11 uri = {}, |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
12 i = 14; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
13 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
14 while (i--) uri[o.key[i]] = m[i] || ""; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
15 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
16 uri[o.q.name] = {}; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
17 uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
18 if ($1) uri[o.q.name][$1] = $2; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
19 }); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
20 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
21 return uri; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
22 }; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
23 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
24 parseUri.options = { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
25 strictMode: false, |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
26 key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
27 q: { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
28 name: "queryKey", |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
29 parser: /(?:^|&)([^&=]*)=?([^&]*)/g |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
30 }, |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
31 parser: { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
32 strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
33 loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
34 } |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
35 }; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
36 |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
37 var currId = 0; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
38 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
39 function MessageBroker(handlers, postMessage) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
40 var awaitingResponses = {}; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
41 |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
42 function sendResponse(id, value, target) { |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
43 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
44 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
45 this.callCmd = function callCmd(cmd, options, cb) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
46 var msg = { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
47 type: "cmd", |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
48 name: cmd, |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
49 id: ++currId, |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
50 options: options |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
51 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
52 if (cb) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
53 awaitingResponses[currId] = cb; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
54 msg.cb = true; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
55 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
56 postMessage(msg); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
57 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
58 |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
59 this.onMessage = function onMessage(msg, origin, source) { |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
60 switch (msg.type) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
61 case "response": |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
62 if (msg.id in awaitingResponses) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
63 var cb = awaitingResponses[msg.id]; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
64 delete awaitingResponses[msg.id]; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
65 cb(msg.value); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
66 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
67 break; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
68 case "cmd": |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
69 var handler = msg.name; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
70 if (handler in handlers) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
71 var cb = undefined; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
72 if (msg.cb) |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
73 cb = function(response) { |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
74 postMessage({type: "response", |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
75 id: msg.id, |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
76 value: response |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
77 }, |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
78 source); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
79 }; |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
80 handlers[handler](msg.options, cb, origin); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
81 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
82 break; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
83 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
84 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
85 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
86 |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
87 function Server(handlers) { |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
88 var broker = new MessageBroker(handlers, postMessage); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
89 var originBrokers = {}; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
90 |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
91 function brokerForOrigin(origin) { |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
92 function postMessage(msg, target) { |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
93 target.postMessage(JSON.stringify(msg), origin); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
94 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
95 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
96 return new MessageBroker(handlers, postMessage); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
97 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
98 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
99 function onMessage(event) { |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
100 if (!(event.origin in originBrokers)) |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
101 originBrokers[event.origin] = brokerForOrigin(event.origin); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
102 |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
103 originBrokers[event.origin].onMessage(JSON.parse(event.data), |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
104 event.origin, |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
105 event.source); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
106 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
107 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
108 window.addEventListener("message", onMessage, false); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
109 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
110 |
54
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
111 function GenericClient(origin, url) { |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
112 var broker = new MessageBroker({}, postMessage); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
113 var iframe = window.document.createElement("iframe"); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
114 var otherWindow; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
115 var queuedMessages = []; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
116 |
54
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
117 iframe.src = url; |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
118 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
119 iframe.onload = function() { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
120 otherWindow = iframe.contentWindow; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
121 queuedMessages.forEach(postMessage); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
122 queuedMessages = []; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
123 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
124 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
125 iframe.style.display = "none"; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
126 window.document.documentElement.appendChild(iframe); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
127 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
128 function postMessage(msg) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
129 if (!otherWindow) |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
130 queuedMessages.push(msg); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
131 else |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
132 otherWindow.postMessage(JSON.stringify(msg), origin); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
133 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
134 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
135 function onMessage(event) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
136 if (event.origin == origin) |
19
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
137 broker.onMessage(JSON.parse(event.data), event.origin, |
e1b3e9916b57
made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents:
17
diff
changeset
|
138 event.source); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
139 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
140 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
141 this.callCmd = broker.callCmd; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
142 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
143 window.addEventListener("message", onMessage, false); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
144 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
145 |
54
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
146 function Client(url) { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
147 if (url === undefined) |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
148 url = "."; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
149 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
150 var parsed = parseUri(url); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
151 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
152 if (parsed.protocol == "") { |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
153 var a = window.document.createElement("a"); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
154 a.href = url; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
155 window.document.documentElement.appendChild(a); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
156 url = a.href; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
157 window.document.documentElement.removeChild(a); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
158 parsed = parseUri(url); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
159 } |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
160 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
161 if (parsed.protocol != "http" && |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
162 parsed.protocol != "https") |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
163 throw new Error("invalid server URL: " + url); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
164 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
165 var origin = parsed.protocol + "://" + parsed.authority; |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
166 |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
167 console.log(parsed, origin, url); |
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
168 |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
169 var self = this; |
54
fe5a2f26787d
Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents:
53
diff
changeset
|
170 var client = new GenericClient(origin, url + "server.html"); |
17
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
171 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
172 function addMethod(name) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
173 self[name] = function(options, cb) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
174 if (typeof(options) == "function" && !cb) { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
175 cb = options; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
176 options = null; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
177 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
178 client.callCmd(name, options, cb); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
179 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
180 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
181 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
182 addMethod("getAllUsers"); |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
183 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
184 |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
185 window.Summit = { |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
186 Client: Client, |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
187 Server: Server |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
188 }; |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
189 } |
18d28e6a9887
Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
190 )(window); |