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 6a56ff762e65776a9430367252ff8c3c3e498768..882a79abf126b707aa97ffe85ece284d7cd666a2 100644 |
--- a/remoting/host/plugin/host_script_object.cc |
+++ b/remoting/host/plugin/host_script_object.cc |
@@ -52,6 +52,8 @@ const char* kFuncNameGenerateKeyPair = "generateKeyPair"; |
const char* kFuncNameUpdateDaemonConfig = "updateDaemonConfig"; |
const char* kFuncNameGetDaemonConfig = "getDaemonConfig"; |
const char* kFuncNameGetDaemonVersion = "getDaemonVersion"; |
+const char* kFuncNameGetUsageStatsConsent = "getUsageStatsConsent"; |
+const char* kFuncNameSetUsageStatsConsent = "setUsageStatsConsent"; |
const char* kFuncNameStartDaemon = "startDaemon"; |
const char* kFuncNameStopDaemon = "stopDaemon"; |
@@ -161,6 +163,8 @@ bool HostNPScriptObject::HasMethod(const std::string& method_name) { |
method_name == kFuncNameUpdateDaemonConfig || |
method_name == kFuncNameGetDaemonConfig || |
method_name == kFuncNameGetDaemonVersion || |
+ method_name == kFuncNameGetUsageStatsConsent || |
+ method_name == kFuncNameSetUsageStatsConsent || |
method_name == kFuncNameStartDaemon || |
method_name == kFuncNameStopDaemon); |
} |
@@ -198,6 +202,10 @@ bool HostNPScriptObject::Invoke(const std::string& method_name, |
return GetDaemonConfig(args, arg_count, result); |
} else if (method_name == kFuncNameGetDaemonVersion) { |
return GetDaemonVersion(args, arg_count, result); |
+ } else if (method_name == kFuncNameGetUsageStatsConsent) { |
+ return GetUsageStatsConsent(args, arg_count, result); |
+ } else if (method_name == kFuncNameSetUsageStatsConsent) { |
+ return SetUsageStatsConsent(args, arg_count, result); |
} else if (method_name == kFuncNameStartDaemon) { |
return StartDaemon(args, arg_count, result); |
} else if (method_name == kFuncNameStopDaemon) { |
@@ -371,6 +379,8 @@ bool HostNPScriptObject::Enumerate(std::vector<std::string>* values) { |
kFuncNameUpdateDaemonConfig, |
kFuncNameGetDaemonConfig, |
kFuncNameGetDaemonVersion, |
+ kFuncNameGetUsageStatsConsent, |
+ kFuncNameSetUsageStatsConsent, |
kFuncNameStartDaemon, |
kFuncNameStopDaemon |
}; |
@@ -758,6 +768,46 @@ bool HostNPScriptObject::GetDaemonVersion(const NPVariant* args, |
return true; |
} |
+bool HostNPScriptObject::GetUsageStatsConsent(const NPVariant* args, |
+ uint32_t arg_count, |
+ NPVariant* result) { |
+ if (arg_count != 1) { |
+ SetException("GetUsageStatsConsent: bad number of arguments"); |
Jamie
2012/06/14 23:43:56
Nit: camelCase for the message (ie, the name as vi
alexeypa (please no reviews)
2012/06/19 23:27:29
Done.
|
+ return false; |
+ } |
+ |
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0])); |
+ if (!callback_obj.get()) { |
+ SetException("GetUsageStatsConsent: invalid callback parameter"); |
Jamie
2012/06/14 23:43:56
And here.
alexeypa (please no reviews)
2012/06/19 23:27:29
Done.
|
+ return false; |
+ } |
+ |
+ // We control lifetime of the |daemon_controller_| so it's safe to |
+ // use base::Unretained() here. |
+ daemon_controller_->GetUsageStatsConsent( |
+ base::Bind(&HostNPScriptObject::InvokeGetUsageStatsConsentCallback, |
+ base::Unretained(this), callback_obj)); |
+ |
+ return true; |
+} |
+ |
+bool HostNPScriptObject::SetUsageStatsConsent(const NPVariant* args, |
+ uint32_t arg_count, |
+ NPVariant* result) { |
+ if (arg_count != 1) { |
+ SetException("setUsageStatsConsent: bad number of arguments"); |
+ return false; |
+ } |
+ |
+ if (!NPVARIANT_IS_BOOLEAN(args[0])) { |
+ SetException("setUsageStatsConsent: invalid allowed parameter"); |
+ return false; |
+ } |
+ |
+ daemon_controller_->SetUsageStatsConsent(NPVARIANT_TO_BOOLEAN(args[0])); |
+ return true; |
+} |
+ |
bool HostNPScriptObject::StartDaemon(const NPVariant* args, |
uint32_t arg_count, |
NPVariant* result) { |
@@ -1138,6 +1188,24 @@ void HostNPScriptObject::InvokeGetDaemonVersionCallback( |
g_npnetscape_funcs->releasevariantvalue(&version_val); |
} |
+void HostNPScriptObject::InvokeGetUsageStatsConsentCallback( |
+ const ScopedRefNPObject& callback, bool set_by_policy, bool allowed) { |
+ if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) { |
+ plugin_message_loop_proxy_->PostTask( |
+ FROM_HERE, base::Bind( |
+ &HostNPScriptObject::InvokeGetUsageStatsConsentCallback, |
+ base::Unretained(this), callback, set_by_policy, allowed)); |
+ return; |
+ } |
+ |
+ NPVariant params[2]; |
+ BOOLEAN_TO_NPVARIANT(set_by_policy, params[0]); |
+ BOOLEAN_TO_NPVARIANT(allowed, params[1]); |
+ InvokeAndIgnoreResult(callback.get(), params, arraysize(params)); |
+ g_npnetscape_funcs->releasevariantvalue(&(params[0])); |
+ g_npnetscape_funcs->releasevariantvalue(&(params[1])); |
+} |
+ |
void HostNPScriptObject::LogDebugInfo(const std::string& message) { |
DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread()); |
if (log_debug_info_func_.get()) { |