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

Side by Side Diff: remoting/host/setup/me2me_native_messaging_host.cc

Issue 1076093003: Added method to host daemon to exchange an auth code for just an OAuth (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: for review Created 5 years, 8 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
« no previous file with comments | « remoting/host/setup/me2me_native_messaging_host.h ('k') | remoting/host/setup/oauth_client.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/setup/me2me_native_messaging_host.h" 5 #include "remoting/host/setup/me2me_native_messaging_host.h"
6 #include <string> 6 #include <string>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 const int kElevatedHostTimeoutSeconds = 300; 42 const int kElevatedHostTimeoutSeconds = 300;
43 #endif // defined(OS_WIN) 43 #endif // defined(OS_WIN)
44 44
45 // redirect_uri to use when authenticating service accounts (service account 45 // redirect_uri to use when authenticating service accounts (service account
46 // codes are obtained "out-of-band", i.e., not through an OAuth redirect). 46 // codes are obtained "out-of-band", i.e., not through an OAuth redirect).
47 const char* kServiceAccountRedirectUri = "oob"; 47 const char* kServiceAccountRedirectUri = "oob";
48 48
49 // Features supported in addition to the base protocol. 49 // Features supported in addition to the base protocol.
50 const char* kSupportedFeatures[] = { 50 const char* kSupportedFeatures[] = {
51 "pairingRegistry", 51 "pairingRegistry",
52 "oauthClient" 52 "oauthClient",
53 "getRefreshTokenFromAuthCode",
53 }; 54 };
54 55
55 // Helper to extract the "config" part of a message as a DictionaryValue. 56 // Helper to extract the "config" part of a message as a DictionaryValue.
56 // Returns nullptr on failure, and logs an error message. 57 // Returns nullptr on failure, and logs an error message.
57 scoped_ptr<base::DictionaryValue> ConfigDictionaryFromMessage( 58 scoped_ptr<base::DictionaryValue> ConfigDictionaryFromMessage(
58 scoped_ptr<base::DictionaryValue> message) { 59 scoped_ptr<base::DictionaryValue> message) {
59 scoped_ptr<base::DictionaryValue> result; 60 scoped_ptr<base::DictionaryValue> result;
60 const base::DictionaryValue* config_dict; 61 const base::DictionaryValue* config_dict;
61 if (message->GetDictionary("config", &config_dict)) { 62 if (message->GetDictionary("config", &config_dict)) {
62 result.reset(config_dict->DeepCopy()); 63 result.reset(config_dict->DeepCopy());
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 ProcessGetUsageStatsConsent(message_dict.Pass(), response.Pass()); 154 ProcessGetUsageStatsConsent(message_dict.Pass(), response.Pass());
154 } else if (type == "startDaemon") { 155 } else if (type == "startDaemon") {
155 ProcessStartDaemon(message_dict.Pass(), response.Pass()); 156 ProcessStartDaemon(message_dict.Pass(), response.Pass());
156 } else if (type == "stopDaemon") { 157 } else if (type == "stopDaemon") {
157 ProcessStopDaemon(message_dict.Pass(), response.Pass()); 158 ProcessStopDaemon(message_dict.Pass(), response.Pass());
158 } else if (type == "getDaemonState") { 159 } else if (type == "getDaemonState") {
159 ProcessGetDaemonState(message_dict.Pass(), response.Pass()); 160 ProcessGetDaemonState(message_dict.Pass(), response.Pass());
160 } else if (type == "getHostClientId") { 161 } else if (type == "getHostClientId") {
161 ProcessGetHostClientId(message_dict.Pass(), response.Pass()); 162 ProcessGetHostClientId(message_dict.Pass(), response.Pass());
162 } else if (type == "getCredentialsFromAuthCode") { 163 } else if (type == "getCredentialsFromAuthCode") {
163 ProcessGetCredentialsFromAuthCode(message_dict.Pass(), response.Pass()); 164 ProcessGetCredentialsFromAuthCode(
165 message_dict.Pass(), response.Pass(), true);
166 } else if (type == "getRefreshTokenFromAuthCode") {
167 ProcessGetCredentialsFromAuthCode(
168 message_dict.Pass(), response.Pass(), false);
164 } else { 169 } else {
165 LOG(ERROR) << "Unsupported request type: " << type; 170 LOG(ERROR) << "Unsupported request type: " << type;
166 OnError(); 171 OnError();
167 } 172 }
168 } 173 }
169 174
170 void Me2MeNativeMessagingHost::OnDisconnect() { 175 void Me2MeNativeMessagingHost::OnDisconnect() {
171 if (!quit_closure_.is_null()) 176 if (!quit_closure_.is_null())
172 base::ResetAndReturn(&quit_closure_).Run(); 177 base::ResetAndReturn(&quit_closure_).Run();
173 } 178 }
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 scoped_ptr<base::DictionaryValue> response) { 420 scoped_ptr<base::DictionaryValue> response) {
416 DCHECK(thread_checker_.CalledOnValidThread()); 421 DCHECK(thread_checker_.CalledOnValidThread());
417 422
418 response->SetString("clientId", google_apis::GetOAuth2ClientID( 423 response->SetString("clientId", google_apis::GetOAuth2ClientID(
419 google_apis::CLIENT_REMOTING_HOST)); 424 google_apis::CLIENT_REMOTING_HOST));
420 channel_->SendMessage(response.Pass()); 425 channel_->SendMessage(response.Pass());
421 } 426 }
422 427
423 void Me2MeNativeMessagingHost::ProcessGetCredentialsFromAuthCode( 428 void Me2MeNativeMessagingHost::ProcessGetCredentialsFromAuthCode(
424 scoped_ptr<base::DictionaryValue> message, 429 scoped_ptr<base::DictionaryValue> message,
425 scoped_ptr<base::DictionaryValue> response) { 430 scoped_ptr<base::DictionaryValue> response,
431 bool need_user_email) {
426 DCHECK(thread_checker_.CalledOnValidThread()); 432 DCHECK(thread_checker_.CalledOnValidThread());
427 433
428 std::string auth_code; 434 std::string auth_code;
429 if (!message->GetString("authorizationCode", &auth_code)) { 435 if (!message->GetString("authorizationCode", &auth_code)) {
430 LOG(ERROR) << "'authorizationCode' string not found."; 436 LOG(ERROR) << "'authorizationCode' string not found.";
431 OnError(); 437 OnError();
432 return; 438 return;
433 } 439 }
434 440
435 gaia::OAuthClientInfo oauth_client_info = { 441 gaia::OAuthClientInfo oauth_client_info = {
436 google_apis::GetOAuth2ClientID(google_apis::CLIENT_REMOTING_HOST), 442 google_apis::GetOAuth2ClientID(google_apis::CLIENT_REMOTING_HOST),
437 google_apis::GetOAuth2ClientSecret(google_apis::CLIENT_REMOTING_HOST), 443 google_apis::GetOAuth2ClientSecret(google_apis::CLIENT_REMOTING_HOST),
438 kServiceAccountRedirectUri 444 kServiceAccountRedirectUri
439 }; 445 };
440 446
441 oauth_client_->GetCredentialsFromAuthCode( 447 oauth_client_->GetCredentialsFromAuthCode(
442 oauth_client_info, auth_code, base::Bind( 448 oauth_client_info, auth_code, need_user_email, base::Bind(
443 &Me2MeNativeMessagingHost::SendCredentialsResponse, weak_ptr_, 449 &Me2MeNativeMessagingHost::SendCredentialsResponse, weak_ptr_,
444 base::Passed(&response))); 450 base::Passed(&response)));
445 } 451 }
446 452
447 void Me2MeNativeMessagingHost::SendConfigResponse( 453 void Me2MeNativeMessagingHost::SendConfigResponse(
448 scoped_ptr<base::DictionaryValue> response, 454 scoped_ptr<base::DictionaryValue> response,
449 scoped_ptr<base::DictionaryValue> config) { 455 scoped_ptr<base::DictionaryValue> config) {
450 DCHECK(thread_checker_.CalledOnValidThread()); 456 DCHECK(thread_checker_.CalledOnValidThread());
451 457
452 if (config) { 458 if (config) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 response->SetBoolean("result", result); 512 response->SetBoolean("result", result);
507 channel_->SendMessage(response.Pass()); 513 channel_->SendMessage(response.Pass());
508 } 514 }
509 515
510 void Me2MeNativeMessagingHost::SendCredentialsResponse( 516 void Me2MeNativeMessagingHost::SendCredentialsResponse(
511 scoped_ptr<base::DictionaryValue> response, 517 scoped_ptr<base::DictionaryValue> response,
512 const std::string& user_email, 518 const std::string& user_email,
513 const std::string& refresh_token) { 519 const std::string& refresh_token) {
514 DCHECK(thread_checker_.CalledOnValidThread()); 520 DCHECK(thread_checker_.CalledOnValidThread());
515 521
516 response->SetString("userEmail", user_email); 522 if (!user_email.empty()) {
523 response->SetString("userEmail", user_email);
524 }
517 response->SetString("refreshToken", refresh_token); 525 response->SetString("refreshToken", refresh_token);
518 channel_->SendMessage(response.Pass()); 526 channel_->SendMessage(response.Pass());
519 } 527 }
520 528
521 void Me2MeNativeMessagingHost::OnError() { 529 void Me2MeNativeMessagingHost::OnError() {
522 // Trigger a host shutdown by sending a nullptr message. 530 // Trigger a host shutdown by sending a nullptr message.
523 channel_->SendMessage(nullptr); 531 channel_->SendMessage(nullptr);
524 } 532 }
525 533
526 void Me2MeNativeMessagingHost::Stop() { 534 void Me2MeNativeMessagingHost::Stop() {
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 735
728 bool Me2MeNativeMessagingHost::DelegateToElevatedHost( 736 bool Me2MeNativeMessagingHost::DelegateToElevatedHost(
729 scoped_ptr<base::DictionaryValue> message) { 737 scoped_ptr<base::DictionaryValue> message) {
730 NOTREACHED(); 738 NOTREACHED();
731 return false; 739 return false;
732 } 740 }
733 741
734 #endif // !defined(OS_WIN) 742 #endif // !defined(OS_WIN)
735 743
736 } // namespace remoting 744 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/setup/me2me_native_messaging_host.h ('k') | remoting/host/setup/oauth_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698