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

Unified Diff: remoting/host/plugin/host_script_object.cc

Issue 10024025: Use ScopedRefNPObject to pass NPObjects in the host plugin. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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/host/plugin/host_script_object.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/plugin/host_script_object.cc
diff --git a/remoting/host/plugin/host_script_object.cc b/remoting/host/plugin/host_script_object.cc
index abe65ba0379ef0fd70af8dd78da39160b06ef532..f7f64c8a1d613734c782fb6fa056860b62d9e3df 100644
--- a/remoting/host/plugin/host_script_object.cc
+++ b/remoting/host/plugin/host_script_object.cc
@@ -657,14 +657,12 @@ bool HostNPScriptObject::GenerateKeyPair(const NPVariant* args,
return false;
}
- NPObject* callback_obj = ObjectFromNPVariant(args[0]);
- if (!callback_obj) {
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0]));
+ if (!callback_obj.get()) {
SetException("generateKeyPair: invalid callback parameter");
return false;
}
- callback_obj = g_npnetscape_funcs->retainobject(callback_obj);
-
worker_thread_.message_loop_proxy()->PostTask(
FROM_HERE, base::Bind(&HostNPScriptObject::DoGenerateKeyPair,
base::Unretained(this), callback_obj));
@@ -689,8 +687,8 @@ bool HostNPScriptObject::UpdateDaemonConfig(const NPVariant* args,
scoped_ptr<base::DictionaryValue> config_dict(
reinterpret_cast<base::DictionaryValue*>(config.release()));
- NPObject* callback_obj = ObjectFromNPVariant(args[1]);
- if (!callback_obj) {
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[1]));
+ if (callback_obj.get()) {
SetException("updateDaemonConfig: invalid callback parameter");
return false;
}
@@ -702,8 +700,6 @@ bool HostNPScriptObject::UpdateDaemonConfig(const NPVariant* args,
return false;
}
- callback_obj = g_npnetscape_funcs->retainobject(callback_obj);
-
daemon_controller_->UpdateConfig(
config_dict.Pass(),
base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback,
@@ -719,14 +715,12 @@ bool HostNPScriptObject::GetDaemonConfig(const NPVariant* args,
return false;
}
- NPObject* callback_obj = ObjectFromNPVariant(args[0]);
- if (!callback_obj) {
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0]));
+ if (!callback_obj.get()) {
SetException("getDaemonConfig: invalid callback parameter");
return false;
}
- callback_obj = g_npnetscape_funcs->retainobject(callback_obj);
-
// We control lifetime of the |daemon_controller_| so it's safe to
// use base::Unretained() here.
daemon_controller_->GetConfig(
@@ -754,14 +748,12 @@ bool HostNPScriptObject::StartDaemon(const NPVariant* args,
scoped_ptr<base::DictionaryValue> config_dict(
reinterpret_cast<base::DictionaryValue*>(config.release()));
- NPObject* callback_obj = ObjectFromNPVariant(args[1]);
- if (!callback_obj) {
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[1]));
+ if (!callback_obj.get()) {
SetException("startDaemon: invalid callback parameter");
return false;
}
- callback_obj = g_npnetscape_funcs->retainobject(callback_obj);
-
daemon_controller_->SetConfigAndStart(
config_dict.Pass(),
base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback,
@@ -777,14 +769,12 @@ bool HostNPScriptObject::StopDaemon(const NPVariant* args,
return false;
}
- NPObject* callback_obj = ObjectFromNPVariant(args[0]);
- if (!callback_obj) {
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0]));
+ if (!callback_obj.get()) {
SetException("stopDaemon: invalid callback parameter");
return false;
}
- callback_obj = g_npnetscape_funcs->retainobject(callback_obj);
-
daemon_controller_->Stop(
base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback,
base::Unretained(this), callback_obj));
@@ -1034,7 +1024,7 @@ void HostNPScriptObject::UpdateWebappNatPolicy(bool nat_traversal_enabled) {
}
}
-void HostNPScriptObject::DoGenerateKeyPair(NPObject* callback) {
+void HostNPScriptObject::DoGenerateKeyPair(const ScopedRefNPObject& callback) {
HostKeyPair key_pair;
key_pair.Generate();
InvokeGenerateKeyPairCallback(callback, key_pair.GetAsString(),
@@ -1042,7 +1032,7 @@ void HostNPScriptObject::DoGenerateKeyPair(NPObject* callback) {
}
void HostNPScriptObject::InvokeGenerateKeyPairCallback(
- NPObject* callback,
+ const ScopedRefNPObject& callback,
const std::string& private_key,
const std::string& public_key) {
if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) {
@@ -1056,14 +1046,13 @@ void HostNPScriptObject::InvokeGenerateKeyPairCallback(
NPVariant params[2];
params[0] = NPVariantFromString(private_key);
params[1] = NPVariantFromString(public_key);
- InvokeAndIgnoreResult(callback, params, arraysize(params));
+ InvokeAndIgnoreResult(callback.get(), params, arraysize(params));
g_npnetscape_funcs->releasevariantvalue(&(params[0]));
g_npnetscape_funcs->releasevariantvalue(&(params[1]));
- g_npnetscape_funcs->releaseobject(callback);
}
void HostNPScriptObject::InvokeAsyncResultCallback(
- NPObject* callback,
+ const ScopedRefNPObject& callback,
DaemonController::AsyncResult result) {
if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) {
plugin_message_loop_proxy_->PostTask(
@@ -1075,13 +1064,12 @@ void HostNPScriptObject::InvokeAsyncResultCallback(
NPVariant result_var;
INT32_TO_NPVARIANT(static_cast<int32>(result), result_var);
- InvokeAndIgnoreResult(callback, &result_var, 1);
+ InvokeAndIgnoreResult(callback.get(), &result_var, 1);
g_npnetscape_funcs->releasevariantvalue(&result_var);
- g_npnetscape_funcs->releaseobject(callback);
}
void HostNPScriptObject::InvokeGetDaemonConfigCallback(
- NPObject* callback,
+ const ScopedRefNPObject& callback,
scoped_ptr<base::DictionaryValue> config) {
if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) {
plugin_message_loop_proxy_->PostTask(
@@ -1098,9 +1086,8 @@ void HostNPScriptObject::InvokeGetDaemonConfigCallback(
base::JSONWriter::Write(config.get(), &config_str);
NPVariant config_val = NPVariantFromString(config_str);
- InvokeAndIgnoreResult(callback, &config_val, 1);
+ InvokeAndIgnoreResult(callback.get(), &config_val, 1);
g_npnetscape_funcs->releasevariantvalue(&config_val);
- g_npnetscape_funcs->releaseobject(callback);
}
void HostNPScriptObject::LogDebugInfo(const std::string& message) {
« no previous file with comments | « remoting/host/plugin/host_script_object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698