Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Unified Diff: remoting/client/plugin/chromoting_scriptable_object.cc

Issue 3020038: Revert 53892 - Initial scriptable object implementation.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.h ('k') | remoting/client/plugin/pepper_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.h ('k') | remoting/client/plugin/pepper_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698