Chromium Code Reviews| 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()) { |