OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This implements the JavaScript class entrypoint for the plugin instance. | 5 // This implements the JavaScript class entrypoint for the plugin instance. |
6 // The Javascript API is defined as follows. | 6 // The Javascript API is defined as follows. |
7 // | 7 // |
8 // interface ChromotingScriptableObject { | 8 // interface ChromotingScriptableObject { |
9 // | 9 // |
10 // // Chromoting session API version (for this plugin). | 10 // // Chromoting session API version (for this plugin). |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 | 113 |
114 namespace remoting { | 114 namespace remoting { |
115 | 115 |
116 class ChromotingInstance; | 116 class ChromotingInstance; |
117 class PepperXmppProxy; | 117 class PepperXmppProxy; |
118 | 118 |
119 class ChromotingScriptableObject | 119 class ChromotingScriptableObject |
120 : public pp::deprecated::ScriptableObject, | 120 : public pp::deprecated::ScriptableObject, |
121 public base::SupportsWeakPtr<ChromotingScriptableObject> { | 121 public base::SupportsWeakPtr<ChromotingScriptableObject> { |
122 public: | 122 public: |
| 123 // These state values are duplicated in the JS code. Remember to update both |
| 124 // copies when making changes. |
123 enum ConnectionStatus { | 125 enum ConnectionStatus { |
| 126 // TODO(jamiewalch): Remove STATUS_UNKNOWN once all web-apps that might try |
| 127 // to access it have been upgraded. |
124 STATUS_UNKNOWN = 0, | 128 STATUS_UNKNOWN = 0, |
125 STATUS_CONNECTING, | 129 STATUS_CONNECTING, |
126 STATUS_INITIALIZING, | 130 STATUS_INITIALIZING, |
127 STATUS_CONNECTED, | 131 STATUS_CONNECTED, |
128 STATUS_CLOSED, | 132 STATUS_CLOSED, |
129 STATUS_FAILED, | 133 STATUS_FAILED, |
130 }; | 134 }; |
131 | 135 |
| 136 // These state values are duplicated in the JS code. Remember to update both |
| 137 // copies when making changes. |
132 enum ConnectionError { | 138 enum ConnectionError { |
133 ERROR_NONE = 0, | 139 ERROR_NONE = 0, |
134 ERROR_HOST_IS_OFFLINE, | 140 ERROR_HOST_IS_OFFLINE, |
135 ERROR_SESSION_REJECTED, | 141 ERROR_SESSION_REJECTED, |
136 ERROR_INCOMPATIBLE_PROTOCOL, | 142 ERROR_INCOMPATIBLE_PROTOCOL, |
137 ERROR_NETWORK_FAILURE, | 143 ERROR_NETWORK_FAILURE, |
138 }; | 144 }; |
139 | 145 |
140 ChromotingScriptableObject( | 146 ChromotingScriptableObject( |
141 ChromotingInstance* instance, | 147 ChromotingInstance* instance, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 | 196 |
191 std::string name; | 197 std::string name; |
192 pp::Var attribute; | 198 pp::Var attribute; |
193 MethodHandler method; | 199 MethodHandler method; |
194 }; | 200 }; |
195 | 201 |
196 // Routines to add new attribute, method properties. | 202 // Routines to add new attribute, method properties. |
197 void AddAttribute(const std::string& name, pp::Var attribute); | 203 void AddAttribute(const std::string& name, pp::Var attribute); |
198 void AddMethod(const std::string& name, MethodHandler handler); | 204 void AddMethod(const std::string& name, MethodHandler handler); |
199 | 205 |
200 void SignalConnectionInfoChange(); | 206 void SignalConnectionInfoChange(int status, int error); |
201 void SignalDesktopSizeChange(); | 207 void SignalDesktopSizeChange(); |
202 | 208 |
203 // Calls to these methods are posted to the plugin thread so that we | 209 // Calls to these methods are posted to the plugin thread so that we |
204 // call JavaScript with clean stack. This is necessary because | 210 // call JavaScript with clean stack. This is necessary because |
205 // JavaScript event handlers may destroy the plugin. | 211 // JavaScript event handlers may destroy the plugin. |
206 void DoSignalConnectionInfoChange(); | 212 void DoSignalConnectionInfoChange(int status, int error); |
207 void DoSignalDesktopSizeChange(); | 213 void DoSignalDesktopSizeChange(); |
208 void DoSendIq(const std::string& message_xml); | 214 void DoSendIq(const std::string& message_xml); |
209 | 215 |
210 pp::Var DoConnect(const std::vector<pp::Var>& args, pp::Var* exception); | 216 pp::Var DoConnect(const std::vector<pp::Var>& args, pp::Var* exception); |
211 pp::Var DoDisconnect(const std::vector<pp::Var>& args, pp::Var* exception); | 217 pp::Var DoDisconnect(const std::vector<pp::Var>& args, pp::Var* exception); |
212 | 218 |
213 // This method is called by JS to set scale-to-fit. | 219 // This method is called by JS to set scale-to-fit. |
214 pp::Var DoSetScaleToFit(const std::vector<pp::Var>& args, pp::Var* exception); | 220 pp::Var DoSetScaleToFit(const std::vector<pp::Var>& args, pp::Var* exception); |
215 | 221 |
216 // This method is called by Javascript to provide responses to sendIq() | 222 // This method is called by Javascript to provide responses to sendIq() |
(...skipping 13 matching lines...) Expand all Loading... |
230 | 236 |
231 scoped_refptr<base::MessageLoopProxy> plugin_message_loop_; | 237 scoped_refptr<base::MessageLoopProxy> plugin_message_loop_; |
232 ScopedRunnableMethodFactory<ChromotingScriptableObject> task_factory_; | 238 ScopedRunnableMethodFactory<ChromotingScriptableObject> task_factory_; |
233 | 239 |
234 DISALLOW_COPY_AND_ASSIGN(ChromotingScriptableObject); | 240 DISALLOW_COPY_AND_ASSIGN(ChromotingScriptableObject); |
235 }; | 241 }; |
236 | 242 |
237 } // namespace remoting | 243 } // namespace remoting |
238 | 244 |
239 #endif // REMOTING_CLIENT_PLUGIN_CHROMOTING_SCRIPTABLE_OBJECT_H_ | 245 #endif // REMOTING_CLIENT_PLUGIN_CHROMOTING_SCRIPTABLE_OBJECT_H_ |
OLD | NEW |