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

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

Issue 10537182: The user's consent to crash dumps reporting can now be set via the UI (Windows only). The checkbox … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 6 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') | remoting/host/remoting_me2me_host.cc » ('j') | 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 a74f498118b72f22b739dffb1d6bd453be248e1e..dc6c450e4baa688c5aabb34204c7a367ecb7f863 100644
--- a/remoting/host/plugin/host_script_object.cc
+++ b/remoting/host/plugin/host_script_object.cc
@@ -54,6 +54,7 @@ const char* kFuncNameGenerateKeyPair = "generateKeyPair";
const char* kFuncNameUpdateDaemonConfig = "updateDaemonConfig";
const char* kFuncNameGetDaemonConfig = "getDaemonConfig";
const char* kFuncNameGetDaemonVersion = "getDaemonVersion";
+const char* kFuncNameGetUsageStatsConsent = "getUsageStatsConsent";
const char* kFuncNameStartDaemon = "startDaemon";
const char* kFuncNameStopDaemon = "stopDaemon";
@@ -163,6 +164,7 @@ bool HostNPScriptObject::HasMethod(const std::string& method_name) {
method_name == kFuncNameUpdateDaemonConfig ||
method_name == kFuncNameGetDaemonConfig ||
method_name == kFuncNameGetDaemonVersion ||
+ method_name == kFuncNameGetUsageStatsConsent ||
method_name == kFuncNameStartDaemon ||
method_name == kFuncNameStopDaemon);
}
@@ -200,6 +202,8 @@ 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 == kFuncNameStartDaemon) {
return StartDaemon(args, arg_count, result);
} else if (method_name == kFuncNameStopDaemon) {
@@ -373,6 +377,7 @@ bool HostNPScriptObject::Enumerate(std::vector<std::string>* values) {
kFuncNameUpdateDaemonConfig,
kFuncNameGetDaemonConfig,
kFuncNameGetDaemonVersion,
+ kFuncNameGetUsageStatsConsent,
kFuncNameStartDaemon,
kFuncNameStopDaemon
};
@@ -762,10 +767,32 @@ 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");
+ return false;
+ }
+
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0]));
+ if (!callback_obj.get()) {
+ SetException("getUsageStatsConsent: invalid callback parameter");
+ 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::StartDaemon(const NPVariant* args,
uint32_t arg_count,
NPVariant* result) {
- if (arg_count != 2) {
+ if (arg_count != 3) {
SetException("startDaemon: bad number of arguments");
return false;
}
@@ -775,13 +802,18 @@ bool HostNPScriptObject::StartDaemon(const NPVariant* args,
base::JSONReader::Read(config_str, base::JSON_ALLOW_TRAILING_COMMAS));
if (config_str.empty() || !config.get() ||
!config->IsType(base::Value::TYPE_DICTIONARY)) {
- SetException("updateDaemonConfig: bad config parameter");
+ SetException("startDaemon: bad config parameter");
return false;
}
scoped_ptr<base::DictionaryValue> config_dict(
reinterpret_cast<base::DictionaryValue*>(config.release()));
- ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[1]));
+ if (!NPVARIANT_IS_BOOLEAN(args[1])) {
+ SetException("startDaemon: invalid consent parameter");
+ return false;
+ }
+
+ ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[2]));
if (!callback_obj.get()) {
SetException("startDaemon: invalid callback parameter");
return false;
@@ -789,6 +821,7 @@ bool HostNPScriptObject::StartDaemon(const NPVariant* args,
daemon_controller_->SetConfigAndStart(
config_dict.Pass(),
+ NPVARIANT_TO_BOOLEAN(args[1]),
base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback,
base::Unretained(this), callback_obj));
return true;
@@ -1142,6 +1175,30 @@ void HostNPScriptObject::InvokeGetDaemonVersionCallback(
g_npnetscape_funcs->releasevariantvalue(&version_val);
}
+void HostNPScriptObject::InvokeGetUsageStatsConsentCallback(
+ const ScopedRefNPObject& callback,
+ bool supported,
+ bool allowed,
+ bool set_by_policy) {
+ if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) {
+ plugin_message_loop_proxy_->PostTask(
+ FROM_HERE, base::Bind(
+ &HostNPScriptObject::InvokeGetUsageStatsConsentCallback,
+ base::Unretained(this), callback, supported, allowed,
+ set_by_policy));
+ return;
+ }
+
+ NPVariant params[3];
+ BOOLEAN_TO_NPVARIANT(supported, params[0]);
+ BOOLEAN_TO_NPVARIANT(allowed, params[1]);
+ BOOLEAN_TO_NPVARIANT(set_by_policy, params[2]);
+ InvokeAndIgnoreResult(callback.get(), params, arraysize(params));
+ g_npnetscape_funcs->releasevariantvalue(&(params[0]));
+ g_npnetscape_funcs->releasevariantvalue(&(params[1]));
+ g_npnetscape_funcs->releasevariantvalue(&(params[2]));
+}
+
void HostNPScriptObject::LogDebugInfo(const std::string& message) {
DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread());
if (log_debug_info_func_.get()) {
« no previous file with comments | « remoting/host/plugin/host_script_object.h ('k') | remoting/host/remoting_me2me_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698