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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
« 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/plugin/host_script_object.h" 5 #include "remoting/host/plugin/host_script_object.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 const char* kAttrNameOnStateChanged = "onStateChanged"; 47 const char* kAttrNameOnStateChanged = "onStateChanged";
48 const char* kFuncNameConnect = "connect"; 48 const char* kFuncNameConnect = "connect";
49 const char* kFuncNameDisconnect = "disconnect"; 49 const char* kFuncNameDisconnect = "disconnect";
50 const char* kFuncNameLocalize = "localize"; 50 const char* kFuncNameLocalize = "localize";
51 const char* kFuncNameGetHostName = "getHostName"; 51 const char* kFuncNameGetHostName = "getHostName";
52 const char* kFuncNameGetPinHash = "getPinHash"; 52 const char* kFuncNameGetPinHash = "getPinHash";
53 const char* kFuncNameGenerateKeyPair = "generateKeyPair"; 53 const char* kFuncNameGenerateKeyPair = "generateKeyPair";
54 const char* kFuncNameUpdateDaemonConfig = "updateDaemonConfig"; 54 const char* kFuncNameUpdateDaemonConfig = "updateDaemonConfig";
55 const char* kFuncNameGetDaemonConfig = "getDaemonConfig"; 55 const char* kFuncNameGetDaemonConfig = "getDaemonConfig";
56 const char* kFuncNameGetDaemonVersion = "getDaemonVersion"; 56 const char* kFuncNameGetDaemonVersion = "getDaemonVersion";
57 const char* kFuncNameGetUsageStatsConsent = "getUsageStatsConsent";
57 const char* kFuncNameStartDaemon = "startDaemon"; 58 const char* kFuncNameStartDaemon = "startDaemon";
58 const char* kFuncNameStopDaemon = "stopDaemon"; 59 const char* kFuncNameStopDaemon = "stopDaemon";
59 60
60 // States. 61 // States.
61 const char* kAttrNameDisconnected = "DISCONNECTED"; 62 const char* kAttrNameDisconnected = "DISCONNECTED";
62 const char* kAttrNameStarting = "STARTING"; 63 const char* kAttrNameStarting = "STARTING";
63 const char* kAttrNameRequestedAccessCode = "REQUESTED_ACCESS_CODE"; 64 const char* kAttrNameRequestedAccessCode = "REQUESTED_ACCESS_CODE";
64 const char* kAttrNameReceivedAccessCode = "RECEIVED_ACCESS_CODE"; 65 const char* kAttrNameReceivedAccessCode = "RECEIVED_ACCESS_CODE";
65 const char* kAttrNameConnected = "CONNECTED"; 66 const char* kAttrNameConnected = "CONNECTED";
66 const char* kAttrNameDisconnecting = "DISCONNECTING"; 67 const char* kAttrNameDisconnecting = "DISCONNECTING";
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_); 157 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_);
157 return (method_name == kFuncNameConnect || 158 return (method_name == kFuncNameConnect ||
158 method_name == kFuncNameDisconnect || 159 method_name == kFuncNameDisconnect ||
159 method_name == kFuncNameLocalize || 160 method_name == kFuncNameLocalize ||
160 method_name == kFuncNameGetHostName || 161 method_name == kFuncNameGetHostName ||
161 method_name == kFuncNameGetPinHash || 162 method_name == kFuncNameGetPinHash ||
162 method_name == kFuncNameGenerateKeyPair || 163 method_name == kFuncNameGenerateKeyPair ||
163 method_name == kFuncNameUpdateDaemonConfig || 164 method_name == kFuncNameUpdateDaemonConfig ||
164 method_name == kFuncNameGetDaemonConfig || 165 method_name == kFuncNameGetDaemonConfig ||
165 method_name == kFuncNameGetDaemonVersion || 166 method_name == kFuncNameGetDaemonVersion ||
167 method_name == kFuncNameGetUsageStatsConsent ||
166 method_name == kFuncNameStartDaemon || 168 method_name == kFuncNameStartDaemon ||
167 method_name == kFuncNameStopDaemon); 169 method_name == kFuncNameStopDaemon);
168 } 170 }
169 171
170 bool HostNPScriptObject::InvokeDefault(const NPVariant* args, 172 bool HostNPScriptObject::InvokeDefault(const NPVariant* args,
171 uint32_t arg_count, 173 uint32_t arg_count,
172 NPVariant* result) { 174 NPVariant* result) {
173 VLOG(2) << "InvokeDefault"; 175 VLOG(2) << "InvokeDefault";
174 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_); 176 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_);
175 SetException("exception during default invocation"); 177 SetException("exception during default invocation");
(...skipping 17 matching lines...) Expand all
193 } else if (method_name == kFuncNameGetPinHash) { 195 } else if (method_name == kFuncNameGetPinHash) {
194 return GetPinHash(args, arg_count, result); 196 return GetPinHash(args, arg_count, result);
195 } else if (method_name == kFuncNameGenerateKeyPair) { 197 } else if (method_name == kFuncNameGenerateKeyPair) {
196 return GenerateKeyPair(args, arg_count, result); 198 return GenerateKeyPair(args, arg_count, result);
197 } else if (method_name == kFuncNameUpdateDaemonConfig) { 199 } else if (method_name == kFuncNameUpdateDaemonConfig) {
198 return UpdateDaemonConfig(args, arg_count, result); 200 return UpdateDaemonConfig(args, arg_count, result);
199 } else if (method_name == kFuncNameGetDaemonConfig) { 201 } else if (method_name == kFuncNameGetDaemonConfig) {
200 return GetDaemonConfig(args, arg_count, result); 202 return GetDaemonConfig(args, arg_count, result);
201 } else if (method_name == kFuncNameGetDaemonVersion) { 203 } else if (method_name == kFuncNameGetDaemonVersion) {
202 return GetDaemonVersion(args, arg_count, result); 204 return GetDaemonVersion(args, arg_count, result);
205 } else if (method_name == kFuncNameGetUsageStatsConsent) {
206 return GetUsageStatsConsent(args, arg_count, result);
203 } else if (method_name == kFuncNameStartDaemon) { 207 } else if (method_name == kFuncNameStartDaemon) {
204 return StartDaemon(args, arg_count, result); 208 return StartDaemon(args, arg_count, result);
205 } else if (method_name == kFuncNameStopDaemon) { 209 } else if (method_name == kFuncNameStopDaemon) {
206 return StopDaemon(args, arg_count, result); 210 return StopDaemon(args, arg_count, result);
207 } else { 211 } else {
208 SetException("Invoke: unknown method " + method_name); 212 SetException("Invoke: unknown method " + method_name);
209 return false; 213 return false;
210 } 214 }
211 } 215 }
212 216
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 kAttrNameError, 370 kAttrNameError,
367 kFuncNameConnect, 371 kFuncNameConnect,
368 kFuncNameDisconnect, 372 kFuncNameDisconnect,
369 kFuncNameLocalize, 373 kFuncNameLocalize,
370 kFuncNameGetHostName, 374 kFuncNameGetHostName,
371 kFuncNameGetPinHash, 375 kFuncNameGetPinHash,
372 kFuncNameGenerateKeyPair, 376 kFuncNameGenerateKeyPair,
373 kFuncNameUpdateDaemonConfig, 377 kFuncNameUpdateDaemonConfig,
374 kFuncNameGetDaemonConfig, 378 kFuncNameGetDaemonConfig,
375 kFuncNameGetDaemonVersion, 379 kFuncNameGetDaemonVersion,
380 kFuncNameGetUsageStatsConsent,
376 kFuncNameStartDaemon, 381 kFuncNameStartDaemon,
377 kFuncNameStopDaemon 382 kFuncNameStopDaemon
378 }; 383 };
379 for (size_t i = 0; i < arraysize(entries); ++i) { 384 for (size_t i = 0; i < arraysize(entries); ++i) {
380 values->push_back(entries[i]); 385 values->push_back(entries[i]);
381 } 386 }
382 return true; 387 return true;
383 } 388 }
384 389
385 void HostNPScriptObject::OnAccessDenied(const std::string& jid) { 390 void HostNPScriptObject::OnAccessDenied(const std::string& jid) {
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 760
756 // We control lifetime of the |daemon_controller_| so it's safe to 761 // We control lifetime of the |daemon_controller_| so it's safe to
757 // use base::Unretained() here. 762 // use base::Unretained() here.
758 daemon_controller_->GetVersion( 763 daemon_controller_->GetVersion(
759 base::Bind(&HostNPScriptObject::InvokeGetDaemonVersionCallback, 764 base::Bind(&HostNPScriptObject::InvokeGetDaemonVersionCallback,
760 base::Unretained(this), callback_obj)); 765 base::Unretained(this), callback_obj));
761 766
762 return true; 767 return true;
763 } 768 }
764 769
770 bool HostNPScriptObject::GetUsageStatsConsent(const NPVariant* args,
771 uint32_t arg_count,
772 NPVariant* result) {
773 if (arg_count != 1) {
774 SetException("getUsageStatsConsent: bad number of arguments");
775 return false;
776 }
777
778 ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[0]));
779 if (!callback_obj.get()) {
780 SetException("getUsageStatsConsent: invalid callback parameter");
781 return false;
782 }
783
784 // We control lifetime of the |daemon_controller_| so it's safe to
785 // use base::Unretained() here.
786 daemon_controller_->GetUsageStatsConsent(
787 base::Bind(&HostNPScriptObject::InvokeGetUsageStatsConsentCallback,
788 base::Unretained(this), callback_obj));
789 return true;
790 }
791
765 bool HostNPScriptObject::StartDaemon(const NPVariant* args, 792 bool HostNPScriptObject::StartDaemon(const NPVariant* args,
766 uint32_t arg_count, 793 uint32_t arg_count,
767 NPVariant* result) { 794 NPVariant* result) {
768 if (arg_count != 2) { 795 if (arg_count != 3) {
769 SetException("startDaemon: bad number of arguments"); 796 SetException("startDaemon: bad number of arguments");
770 return false; 797 return false;
771 } 798 }
772 799
773 std::string config_str = StringFromNPVariant(args[0]); 800 std::string config_str = StringFromNPVariant(args[0]);
774 scoped_ptr<base::Value> config( 801 scoped_ptr<base::Value> config(
775 base::JSONReader::Read(config_str, base::JSON_ALLOW_TRAILING_COMMAS)); 802 base::JSONReader::Read(config_str, base::JSON_ALLOW_TRAILING_COMMAS));
776 if (config_str.empty() || !config.get() || 803 if (config_str.empty() || !config.get() ||
777 !config->IsType(base::Value::TYPE_DICTIONARY)) { 804 !config->IsType(base::Value::TYPE_DICTIONARY)) {
778 SetException("updateDaemonConfig: bad config parameter"); 805 SetException("startDaemon: bad config parameter");
779 return false; 806 return false;
780 } 807 }
781 scoped_ptr<base::DictionaryValue> config_dict( 808 scoped_ptr<base::DictionaryValue> config_dict(
782 reinterpret_cast<base::DictionaryValue*>(config.release())); 809 reinterpret_cast<base::DictionaryValue*>(config.release()));
783 810
784 ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[1])); 811 if (!NPVARIANT_IS_BOOLEAN(args[1])) {
812 SetException("startDaemon: invalid consent parameter");
813 return false;
814 }
815
816 ScopedRefNPObject callback_obj(ObjectFromNPVariant(args[2]));
785 if (!callback_obj.get()) { 817 if (!callback_obj.get()) {
786 SetException("startDaemon: invalid callback parameter"); 818 SetException("startDaemon: invalid callback parameter");
787 return false; 819 return false;
788 } 820 }
789 821
790 daemon_controller_->SetConfigAndStart( 822 daemon_controller_->SetConfigAndStart(
791 config_dict.Pass(), 823 config_dict.Pass(),
824 NPVARIANT_TO_BOOLEAN(args[1]),
792 base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback, 825 base::Bind(&HostNPScriptObject::InvokeAsyncResultCallback,
793 base::Unretained(this), callback_obj)); 826 base::Unretained(this), callback_obj));
794 return true; 827 return true;
795 } 828 }
796 829
797 bool HostNPScriptObject::StopDaemon(const NPVariant* args, 830 bool HostNPScriptObject::StopDaemon(const NPVariant* args,
798 uint32_t arg_count, 831 uint32_t arg_count,
799 NPVariant* result) { 832 NPVariant* result) {
800 if (arg_count != 1) { 833 if (arg_count != 1) {
801 SetException("stopDaemon: bad number of arguments"); 834 SetException("stopDaemon: bad number of arguments");
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 &HostNPScriptObject::InvokeGetDaemonVersionCallback, 1168 &HostNPScriptObject::InvokeGetDaemonVersionCallback,
1136 base::Unretained(this), callback, version)); 1169 base::Unretained(this), callback, version));
1137 return; 1170 return;
1138 } 1171 }
1139 1172
1140 NPVariant version_val = NPVariantFromString(version); 1173 NPVariant version_val = NPVariantFromString(version);
1141 InvokeAndIgnoreResult(callback.get(), &version_val, 1); 1174 InvokeAndIgnoreResult(callback.get(), &version_val, 1);
1142 g_npnetscape_funcs->releasevariantvalue(&version_val); 1175 g_npnetscape_funcs->releasevariantvalue(&version_val);
1143 } 1176 }
1144 1177
1178 void HostNPScriptObject::InvokeGetUsageStatsConsentCallback(
1179 const ScopedRefNPObject& callback,
1180 bool supported,
1181 bool allowed,
1182 bool set_by_policy) {
1183 if (!plugin_message_loop_proxy_->BelongsToCurrentThread()) {
1184 plugin_message_loop_proxy_->PostTask(
1185 FROM_HERE, base::Bind(
1186 &HostNPScriptObject::InvokeGetUsageStatsConsentCallback,
1187 base::Unretained(this), callback, supported, allowed,
1188 set_by_policy));
1189 return;
1190 }
1191
1192 NPVariant params[3];
1193 BOOLEAN_TO_NPVARIANT(supported, params[0]);
1194 BOOLEAN_TO_NPVARIANT(allowed, params[1]);
1195 BOOLEAN_TO_NPVARIANT(set_by_policy, params[2]);
1196 InvokeAndIgnoreResult(callback.get(), params, arraysize(params));
1197 g_npnetscape_funcs->releasevariantvalue(&(params[0]));
1198 g_npnetscape_funcs->releasevariantvalue(&(params[1]));
1199 g_npnetscape_funcs->releasevariantvalue(&(params[2]));
1200 }
1201
1145 void HostNPScriptObject::LogDebugInfo(const std::string& message) { 1202 void HostNPScriptObject::LogDebugInfo(const std::string& message) {
1146 DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread()); 1203 DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread());
1147 if (log_debug_info_func_.get()) { 1204 if (log_debug_info_func_.get()) {
1148 am_currently_logging_ = true; 1205 am_currently_logging_ = true;
1149 NPVariant log_message; 1206 NPVariant log_message;
1150 STRINGZ_TO_NPVARIANT(message.c_str(), log_message); 1207 STRINGZ_TO_NPVARIANT(message.c_str(), log_message);
1151 bool is_good = InvokeAndIgnoreResult(log_debug_info_func_.get(), 1208 bool is_good = InvokeAndIgnoreResult(log_debug_info_func_.get(),
1152 &log_message, 1); 1209 &log_message, 1);
1153 if (!is_good) { 1210 if (!is_good) {
1154 LOG(ERROR) << "ERROR - LogDebugInfo failed\n"; 1211 LOG(ERROR) << "ERROR - LogDebugInfo failed\n";
(...skipping 14 matching lines...) Expand all
1169 return is_good; 1226 return is_good;
1170 } 1227 }
1171 1228
1172 void HostNPScriptObject::SetException(const std::string& exception_string) { 1229 void HostNPScriptObject::SetException(const std::string& exception_string) {
1173 DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread()); 1230 DCHECK(plugin_message_loop_proxy_->BelongsToCurrentThread());
1174 g_npnetscape_funcs->setexception(parent_, exception_string.c_str()); 1231 g_npnetscape_funcs->setexception(parent_, exception_string.c_str());
1175 LOG(INFO) << exception_string; 1232 LOG(INFO) << exception_string;
1176 } 1233 }
1177 1234
1178 } // namespace remoting 1235 } // namespace remoting
OLDNEW
« 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