Index: remoting/client/plugin/chromoting_scriptable_object.cc |
=================================================================== |
--- remoting/client/plugin/chromoting_scriptable_object.cc (revision 53948) |
+++ remoting/client/plugin/chromoting_scriptable_object.cc (working copy) |
@@ -1,172 +0,0 @@ |
-// Copyright 2010 Google Inc. All Rights Reserved. |
-// Author: ajwong@google.com (Albert Wong) |
- |
-#include "remoting/client/plugin/chromoting_scriptable_object.h" |
- |
-#include "remoting/client/client_config.h" |
-#include "remoting/client/plugin/chromoting_plugin.h" |
- |
-#include "third_party/ppapi/cpp/var.h" |
- |
-using pp::Var; |
- |
-namespace remoting { |
-ChromotingScriptableObject::ChromotingScriptableObject( |
- ChromotingPlugin* instance) |
- : instance_(instance) { |
-} |
- |
-ChromotingScriptableObject::~ChromotingScriptableObject() { |
-} |
- |
-void ChromotingScriptableObject::Init() { |
- // Property addition order should match the interface description at the |
- // top of chromoting_scriptable_object.h. |
- AddAttribute("onreadystatechange", Var()); |
- |
- AddAttribute("NOT_CONNECTED", Var(0)); |
- AddAttribute("CONNECTED", Var(1)); |
- |
- AddMethod("connect", &ChromotingScriptableObject::DoConnect); |
- |
- // TODO(ajwong): Figure out how to implement the status variable. |
- AddAttribute("status", Var("not_implemented_yet")); |
-} |
- |
-bool ChromotingScriptableObject::HasProperty(const Var& name, Var* exception) { |
- // TODO(ajwong): Check if all these name.is_string() sentinels are required. |
- if (!name.is_string()) { |
- *exception = Var("HasProperty expects a string for the name."); |
- return false; |
- } |
- |
- PropertyNameMap::const_iterator iter = property_names_.find(name.AsString()); |
- if (iter == property_names_.end()) { |
- return false; |
- } |
- |
- return properties_[iter->second].method == NULL; |
-} |
- |
-bool ChromotingScriptableObject::HasMethod(const Var& name, Var* exception) { |
- // TODO(ajwong): Check if all these name.is_string() sentinels are required. |
- if (!name.is_string()) { |
- *exception = Var("HasMethod expects a string for the name."); |
- return false; |
- } |
- |
- PropertyNameMap::const_iterator iter = property_names_.find(name.AsString()); |
- if (iter == property_names_.end()) { |
- return false; |
- } |
- |
- return properties_[iter->second].method != NULL; |
-} |
- |
-Var ChromotingScriptableObject::GetProperty(const Var& name, Var* exception) { |
- // TODO(ajwong): Check if all these name.is_string() sentinels are required. |
- if (!name.is_string()) { |
- *exception = Var("GetProperty expects a string for the name."); |
- return Var(); |
- } |
- |
- PropertyNameMap::const_iterator iter = property_names_.find(name.AsString()); |
- |
- // No property found. |
- if (iter == property_names_.end()) { |
- return ScriptableObject::GetProperty(name, exception); |
- } |
- |
- // TODO(ajwong): This incorrectly return a null object if a function |
- // property is requested. |
- return properties_[iter->second].attribute; |
-} |
- |
-void ChromotingScriptableObject::GetAllPropertyNames( |
- std::vector<Var>* properties, |
- Var* exception) { |
- for (size_t i = 0; i < properties_.size(); i++) { |
- properties->push_back(Var(properties_[i].name)); |
- } |
-} |
- |
-void ChromotingScriptableObject::SetProperty(const Var& name, |
- const Var& value, |
- Var* exception) { |
- // TODO(ajwong): Check if all these name.is_string() sentinels are required. |
- if (!name.is_string()) { |
- *exception = Var("SetProperty expects a string for the name."); |
- return; |
- } |
- |
- // Only allow writing to onreadystatechange. See top of |
- // chromoting_scriptable_object.h for the object interface definition. |
- std::string property_name = name.AsString(); |
- if (property_name != "onstatechange") { |
- *exception = |
- Var("Cannot set property " + property_name + " on this object."); |
- return; |
- } |
- |
- // Since we're whitelisting the propertie that are settable above, we can |
- // assume that the property exists in the map. |
- properties_[property_names_[property_name]].attribute = value; |
-} |
- |
-Var ChromotingScriptableObject::Call(const Var& method_name, |
- const std::vector<Var>& args, |
- Var* exception) { |
- PropertyNameMap::const_iterator iter = |
- property_names_.find(method_name.AsString()); |
- if (iter == property_names_.end()) { |
- return pp::ScriptableObject::Call(method_name, args, exception); |
- } |
- |
- return (this->*(properties_[iter->second].method))(args, exception); |
-} |
- |
-void ChromotingScriptableObject::AddAttribute(const std::string& name, |
- Var attribute) { |
- property_names_[name] = properties_.size(); |
- properties_.push_back(PropertyDescriptor(name, attribute)); |
-} |
- |
-void ChromotingScriptableObject::AddMethod(const std::string& name, |
- MethodHandler handler) { |
- property_names_[name] = properties_.size(); |
- properties_.push_back(PropertyDescriptor(name, handler)); |
-} |
- |
-pp::Var ChromotingScriptableObject::DoConnect(const std::vector<Var>& args, |
- Var* exception) { |
- if (args.size() != 3) { |
- *exception = Var("Usage: connect(username, host_jid, auth_token"); |
- return Var(); |
- } |
- |
- ClientConfig config; |
- |
- if (!args[0].is_string()) { |
- *exception = Var("The username must be a string."); |
- return Var(); |
- } |
- config.username = args[0].AsString(); |
- |
- if (!args[1].is_string()) { |
- *exception = Var("The host_jid must be a string."); |
- return Var(); |
- } |
- config.host_jid = args[1].AsString(); |
- |
- if (!args[2].is_string()) { |
- *exception = Var("The auth_token must be a string."); |
- return Var(); |
- } |
- config.auth_token = args[2].AsString(); |
- |
- instance_->Connect(config); |
- |
- return Var(); |
-} |
- |
-} // namespace remoting |