| OLD | NEW | 
 | (Empty) | 
|    1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |  | 
|    2 // Use of this source code is governed by a BSD-style license that can be |  | 
|    3 // found in the LICENSE file. |  | 
|    4  |  | 
|    5 // This implements the JavaScript class entrypoint for the plugin. |  | 
|    6 // The Javascript API is defined as follows. |  | 
|    7 // |  | 
|    8 // interface ChromotingScriptableObject { |  | 
|    9 //   // Called when the Chromoting plugin has had a state change such as |  | 
|   10 //   // connection completed. |  | 
|   11 //   attribute Function onreadystatechange; |  | 
|   12 // |  | 
|   13 //   // Constants for states, etc. |  | 
|   14 //   const unsigned short NOT_CONNECTED = 0; |  | 
|   15 //   const unsigned short CONNECTED = 1; |  | 
|   16 // |  | 
|   17 //   // Methods on the object. |  | 
|   18 //   void connect(string username, string host_jid, string auth_token); |  | 
|   19 // |  | 
|   20 //   // Attributes. |  | 
|   21 //   readonly attribute unsigned short status; |  | 
|   22 // } |  | 
|   23 // |  | 
|   24 //  onreadystatechange |  | 
|   25 // |  | 
|   26 // Methods: |  | 
|   27 //   Connect(username, auth_token, host_jid, onstatechange); |  | 
|   28  |  | 
|   29 #ifndef REMOTING_CLIENT_PLUGIN_CHROMOTING_SCRIPTABLE_OBJECT_H_ |  | 
|   30 #define REMOTING_CLIENT_PLUGIN_CHROMOTING_SCRIPTABLE_OBJECT_H_ |  | 
|   31  |  | 
|   32 #include <map> |  | 
|   33 #include <string> |  | 
|   34 #include <vector> |  | 
|   35  |  | 
|   36 #include "third_party/ppapi/cpp/scriptable_object.h" |  | 
|   37 #include "third_party/ppapi/cpp/var.h" |  | 
|   38  |  | 
|   39 namespace remoting { |  | 
|   40  |  | 
|   41 class ChromotingPlugin; |  | 
|   42  |  | 
|   43 class ChromotingScriptableObject : public pp::ScriptableObject { |  | 
|   44  public: |  | 
|   45   explicit ChromotingScriptableObject(ChromotingPlugin* instance); |  | 
|   46   virtual ~ChromotingScriptableObject(); |  | 
|   47  |  | 
|   48   virtual void Init(); |  | 
|   49  |  | 
|   50   // Override the ScriptableObject functions. |  | 
|   51   virtual bool HasProperty(const pp::Var& name, pp::Var* exception); |  | 
|   52   virtual bool HasMethod(const pp::Var& name, pp::Var* exception); |  | 
|   53   virtual pp::Var GetProperty(const pp::Var& name, pp::Var* exception); |  | 
|   54   virtual void GetAllPropertyNames(std::vector<pp::Var>* properties, |  | 
|   55                                    pp::Var* exception); |  | 
|   56   virtual void SetProperty(const pp::Var& name, |  | 
|   57                            const pp::Var& value, |  | 
|   58                            pp::Var* exception); |  | 
|   59   virtual pp::Var Call(const pp::Var& method_name, |  | 
|   60                        const std::vector<pp::Var>& args, |  | 
|   61                        pp::Var* exception); |  | 
|   62  |  | 
|   63  private: |  | 
|   64   typedef std::map<std::string, int> PropertyNameMap; |  | 
|   65   typedef pp::Var (ChromotingScriptableObject::*MethodHandler)( |  | 
|   66       const std::vector<pp::Var>& args, pp::Var* exception); |  | 
|   67   struct PropertyDescriptor { |  | 
|   68     explicit PropertyDescriptor(const std::string& n, pp::Var a) |  | 
|   69         : name(n), attribute(a), method(NULL) { |  | 
|   70     } |  | 
|   71  |  | 
|   72     explicit PropertyDescriptor(const std::string& n, MethodHandler m) |  | 
|   73         : name(n), method(m) { |  | 
|   74     } |  | 
|   75  |  | 
|   76     enum Type { |  | 
|   77       ATTRIBUTE, |  | 
|   78       METHOD, |  | 
|   79     } type; |  | 
|   80  |  | 
|   81     std::string name; |  | 
|   82     pp::Var attribute; |  | 
|   83     MethodHandler method; |  | 
|   84   }; |  | 
|   85  |  | 
|   86  |  | 
|   87   void AddAttribute(const std::string& name, pp::Var attribute); |  | 
|   88   void AddMethod(const std::string& name, MethodHandler handler); |  | 
|   89  |  | 
|   90   pp::Var DoConnect(const std::vector<pp::Var>& args, pp::Var* exception); |  | 
|   91  |  | 
|   92   PropertyNameMap property_names_; |  | 
|   93   std::vector<PropertyDescriptor> properties_; |  | 
|   94  |  | 
|   95   ChromotingPlugin* instance_; |  | 
|   96 }; |  | 
|   97  |  | 
|   98 }  // namespace remoting |  | 
|   99  |  | 
|  100 #endif  // REMOTING_CLIENT_PLUGIN_CHROMOTING_SCRIPTABLE_OBJECT_H_ |  | 
| OLD | NEW |