+bool HostNPScriptObject::InstallHost(const NPVariant* args,
+ uint32_t arg_count,
+ NPVariant* result) {
+ DCHECK(plugin_task_runner_->BelongsToCurrentThread());
+
+ if (arg_count != 1) {
+ SetException("installHost: bad number of arguments");
+ return false;
+ }
+
+ scoped_ptr<ScopedRefNPObject> callback_obj(
+ new ScopedRefNPObject(ObjectFromNPVariant(args[0])));
+ if (!callback_obj->get()) {
+ SetException("installHost: invalid callback parameter");
+ return false;
+ }
+
+ daemon_controller_->InstallHost(
+ base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback, weak_ptr_,
+ base::Passed(&callback_obj)));
+ return true;
+}
+