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

Side by Side Diff: chrome/browser/extensions/api/gcd_private/gcd_private_api.cc

Issue 468613003: API change to allow sticker authentication for devices (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 3 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 | « no previous file | chrome/browser/local_discovery/privetv3_session.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/extensions/api/gcd_private/gcd_private_api.h" 5 #include "chrome/browser/extensions/api/gcd_private/gcd_private_api.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/memory/linked_ptr.h" 8 #include "base/memory/linked_ptr.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 virtual ~GcdPrivateAPIImpl(); 117 virtual ~GcdPrivateAPIImpl();
118 118
119 static GcdPrivateAPIImpl* Get(content::BrowserContext* context); 119 static GcdPrivateAPIImpl* Get(content::BrowserContext* context);
120 120
121 bool QueryForDevices(); 121 bool QueryForDevices();
122 122
123 void EstablishSession(const std::string& ip_address, 123 void EstablishSession(const std::string& ip_address,
124 int port, 124 int port,
125 ConfirmationCodeCallback callback); 125 ConfirmationCodeCallback callback);
126 126
127 void ConfirmCode(int session_id, SessionEstablishedCallback callback); 127 void ConfirmCode(int session_id,
128 const std::string& code,
129 SessionEstablishedCallback callback);
128 130
129 void SendMessage(int session_id, 131 void SendMessage(int session_id,
130 const std::string& api, 132 const std::string& api,
131 const base::DictionaryValue& input, 133 const base::DictionaryValue& input,
132 MessageResponseCallback callback); 134 MessageResponseCallback callback);
133 135
134 void RequestWifiPassword(const std::string& ssid, 136 void RequestWifiPassword(const std::string& ssid,
135 const SuccessCallback& callback); 137 const SuccessCallback& callback);
136 138
137 void RemoveSession(int session_id); 139 void RemoveSession(int session_id);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 ConfirmationCodeCallback; 224 ConfirmationCodeCallback;
223 225
224 GcdPrivateSessionHolder(const std::string& ip_address, 226 GcdPrivateSessionHolder(const std::string& ip_address,
225 int port, 227 int port,
226 net::URLRequestContextGetter* request_context); 228 net::URLRequestContextGetter* request_context);
227 virtual ~GcdPrivateSessionHolder(); 229 virtual ~GcdPrivateSessionHolder();
228 230
229 void Start(const ConfirmationCodeCallback& callback); 231 void Start(const ConfirmationCodeCallback& callback);
230 232
231 void ConfirmCode( 233 void ConfirmCode(
234 const std::string& code,
232 const GcdPrivateAPIImpl::SessionEstablishedCallback& callback); 235 const GcdPrivateAPIImpl::SessionEstablishedCallback& callback);
233 236
234 void SendMessage(const std::string& api, 237 void SendMessage(const std::string& api,
235 const base::DictionaryValue& input, 238 const base::DictionaryValue& input,
236 GcdPrivateAPIImpl::MessageResponseCallback callback); 239 GcdPrivateAPIImpl::MessageResponseCallback callback);
237 240
238 void DeleteRequest(GcdPrivateRequest* request); 241 void DeleteRequest(GcdPrivateRequest* request);
239 242
240 private: 243 private:
241 // local_discovery::PrivetV3Session::Delegate implementation. 244 // local_discovery::PrivetV3Session::Delegate implementation.
242 virtual void OnSetupConfirmationNeeded( 245 virtual void OnSetupConfirmationNeeded(
243 const std::string& confirmation_code) OVERRIDE; 246 const std::string& confirmation_code,
244 virtual void OnSessionEstablished() OVERRIDE; 247 api::gcd_private::ConfirmationType confirmation_type) OVERRIDE;
245 virtual void OnCannotEstablishSession() OVERRIDE; 248 virtual void OnSessionStatus(api::gcd_private::Status status) OVERRIDE;
246 249
247 scoped_ptr<local_discovery::PrivetHTTPClient> http_client_; 250 scoped_ptr<local_discovery::PrivetHTTPClient> http_client_;
248 scoped_ptr<local_discovery::PrivetV3Session> privet_session_; 251 scoped_ptr<local_discovery::PrivetV3Session> privet_session_;
249 typedef ScopedVector<GcdPrivateRequest> RequestVector; 252 typedef ScopedVector<GcdPrivateRequest> RequestVector;
250 RequestVector requests_; 253 RequestVector requests_;
251 254
252 ConfirmationCodeCallback confirm_callback_; 255 ConfirmationCodeCallback confirm_callback_;
253 GcdPrivateAPIImpl::SessionEstablishedCallback session_established_callback_; 256 GcdPrivateAPIImpl::SessionEstablishedCallback session_established_callback_;
254 }; 257 };
255 258
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 ConfirmationCodeCallback callback) { 367 ConfirmationCodeCallback callback) {
365 int session_id = last_session_id_++; 368 int session_id = last_session_id_++;
366 linked_ptr<GcdPrivateSessionHolder> session_handler( 369 linked_ptr<GcdPrivateSessionHolder> session_handler(
367 new GcdPrivateSessionHolder( 370 new GcdPrivateSessionHolder(
368 ip_address, port, browser_context_->GetRequestContext())); 371 ip_address, port, browser_context_->GetRequestContext()));
369 sessions_[session_id] = session_handler; 372 sessions_[session_id] = session_handler;
370 session_handler->Start(base::Bind(callback, session_id)); 373 session_handler->Start(base::Bind(callback, session_id));
371 } 374 }
372 375
373 void GcdPrivateAPIImpl::ConfirmCode(int session_id, 376 void GcdPrivateAPIImpl::ConfirmCode(int session_id,
377 const std::string& code,
374 SessionEstablishedCallback callback) { 378 SessionEstablishedCallback callback) {
375 GCDSessionMap::iterator found = sessions_.find(session_id); 379 GCDSessionMap::iterator found = sessions_.find(session_id);
376 380
377 if (found == sessions_.end()) { 381 if (found == sessions_.end()) {
378 callback.Run(gcd_private::STATUS_UNKNOWNSESSIONERROR); 382 callback.Run(gcd_private::STATUS_UNKNOWNSESSIONERROR);
379 return; 383 return;
380 } 384 }
381 385
382 found->second->ConfirmCode(callback); 386 found->second->ConfirmCode(code, callback);
383 } 387 }
384 388
385 void GcdPrivateAPIImpl::SendMessage(int session_id, 389 void GcdPrivateAPIImpl::SendMessage(int session_id,
386 const std::string& api, 390 const std::string& api,
387 const base::DictionaryValue& input, 391 const base::DictionaryValue& input,
388 MessageResponseCallback callback) { 392 MessageResponseCallback callback) {
389 const base::DictionaryValue* input_actual = &input; 393 const base::DictionaryValue* input_actual = &input;
390 #if defined(ENABLE_WIFI_BOOTSTRAPPING) 394 #if defined(ENABLE_WIFI_BOOTSTRAPPING)
391 scoped_ptr<base::DictionaryValue> input_cloned; 395 scoped_ptr<base::DictionaryValue> input_cloned;
392 396
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 548
545 void GcdPrivateSessionHolder::Start(const ConfirmationCodeCallback& callback) { 549 void GcdPrivateSessionHolder::Start(const ConfirmationCodeCallback& callback) {
546 confirm_callback_ = callback; 550 confirm_callback_ = callback;
547 551
548 privet_session_.reset( 552 privet_session_.reset(
549 new local_discovery::PrivetV3Session(http_client_.Pass(), this)); 553 new local_discovery::PrivetV3Session(http_client_.Pass(), this));
550 privet_session_->Start(); 554 privet_session_->Start();
551 } 555 }
552 556
553 void GcdPrivateSessionHolder::ConfirmCode( 557 void GcdPrivateSessionHolder::ConfirmCode(
558 const std::string& code,
554 const GcdPrivateAPIImpl::SessionEstablishedCallback& callback) { 559 const GcdPrivateAPIImpl::SessionEstablishedCallback& callback) {
555 session_established_callback_ = callback; 560 session_established_callback_ = callback;
556 privet_session_->ConfirmCode(); 561 privet_session_->ConfirmCode(code);
557 } 562 }
558 563
559 void GcdPrivateSessionHolder::SendMessage( 564 void GcdPrivateSessionHolder::SendMessage(
560 const std::string& api, 565 const std::string& api,
561 const base::DictionaryValue& input, 566 const base::DictionaryValue& input,
562 GcdPrivateAPIImpl::MessageResponseCallback callback) { 567 GcdPrivateAPIImpl::MessageResponseCallback callback) {
563 GcdPrivateRequest* request = 568 GcdPrivateRequest* request =
564 new GcdPrivateRequest(api, input, callback, this); 569 new GcdPrivateRequest(api, input, callback, this);
565 requests_.push_back(request); 570 requests_.push_back(request);
566 privet_session_->StartRequest(request); 571 privet_session_->StartRequest(request);
567 } 572 }
568 573
569 void GcdPrivateSessionHolder::DeleteRequest(GcdPrivateRequest* request) { 574 void GcdPrivateSessionHolder::DeleteRequest(GcdPrivateRequest* request) {
570 // TODO(noamsml): Does this need to be optimized? 575 // TODO(noamsml): Does this need to be optimized?
571 for (RequestVector::iterator i = requests_.begin(); i != requests_.end(); 576 for (RequestVector::iterator i = requests_.begin(); i != requests_.end();
572 i++) { 577 i++) {
573 if (*i == request) { 578 if (*i == request) {
574 requests_.erase(i); 579 requests_.erase(i);
575 break; 580 break;
576 } 581 }
577 } 582 }
578 } 583 }
579 584
580 void GcdPrivateSessionHolder::OnSetupConfirmationNeeded( 585 void GcdPrivateSessionHolder::OnSetupConfirmationNeeded(
581 const std::string& confirmation_code) { 586 const std::string& confirmation_code,
582 confirm_callback_.Run(gcd_private::STATUS_SUCCESS, 587 gcd_private::ConfirmationType confirmation_type) {
583 confirmation_code, 588 confirm_callback_.Run(
584 gcd_private::CONFIRMATION_TYPE_DISPLAYCODE); 589 gcd_private::STATUS_SUCCESS, confirmation_code, confirmation_type);
585 590
586 confirm_callback_.Reset(); 591 confirm_callback_.Reset();
587 } 592 }
588 593
589 void GcdPrivateSessionHolder::OnSessionEstablished() { 594 void GcdPrivateSessionHolder::OnSessionStatus(gcd_private::Status status) {
590 session_established_callback_.Run(gcd_private::STATUS_SUCCESS); 595 session_established_callback_.Run(status);
591 596
592 session_established_callback_.Reset(); 597 session_established_callback_.Reset();
593 } 598 }
594
595 void GcdPrivateSessionHolder::OnCannotEstablishSession() {
596 session_established_callback_.Run(gcd_private::STATUS_SESSIONERROR);
597
598 session_established_callback_.Reset();
599 }
600 599
601 GcdPrivateAPI::GcdPrivateAPI(content::BrowserContext* context) 600 GcdPrivateAPI::GcdPrivateAPI(content::BrowserContext* context)
602 : impl_(new GcdPrivateAPIImpl(context)) { 601 : impl_(new GcdPrivateAPIImpl(context)) {
603 } 602 }
604 603
605 GcdPrivateAPI::~GcdPrivateAPI() { 604 GcdPrivateAPI::~GcdPrivateAPI() {
606 } 605 }
607 606
608 // static 607 // static
609 BrowserContextKeyedAPIFactory<GcdPrivateAPI>* 608 BrowserContextKeyedAPIFactory<GcdPrivateAPI>*
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 this)); 766 this));
768 767
769 return true; 768 return true;
770 } 769 }
771 770
772 void GcdPrivateEstablishSessionFunction::OnConfirmCodeCallback( 771 void GcdPrivateEstablishSessionFunction::OnConfirmCodeCallback(
773 int session_id, 772 int session_id,
774 gcd_private::Status status, 773 gcd_private::Status status,
775 const std::string& confirm_code, 774 const std::string& confirm_code,
776 gcd_private::ConfirmationType confirmation_type) { 775 gcd_private::ConfirmationType confirmation_type) {
777 results_ = gcd_private::EstablishSession::Results::Create( 776 gcd_private::ConfirmationInfo info;
778 session_id, status, confirm_code, confirmation_type); 777
778 info.type = confirmation_type;
779 if (!confirm_code.empty()) {
780 info.code.reset(new std::string(confirm_code));
781 }
782
783 results_ =
784 gcd_private::EstablishSession::Results::Create(session_id, status, info);
779 SendResponse(true); 785 SendResponse(true);
780 } 786 }
781 787
782 GcdPrivateConfirmCodeFunction::GcdPrivateConfirmCodeFunction() { 788 GcdPrivateConfirmCodeFunction::GcdPrivateConfirmCodeFunction() {
783 } 789 }
784 790
785 GcdPrivateConfirmCodeFunction::~GcdPrivateConfirmCodeFunction() { 791 GcdPrivateConfirmCodeFunction::~GcdPrivateConfirmCodeFunction() {
786 } 792 }
787 793
788 bool GcdPrivateConfirmCodeFunction::RunAsync() { 794 bool GcdPrivateConfirmCodeFunction::RunAsync() {
789 scoped_ptr<gcd_private::ConfirmCode::Params> params = 795 scoped_ptr<gcd_private::ConfirmCode::Params> params =
790 gcd_private::ConfirmCode::Params::Create(*args_); 796 gcd_private::ConfirmCode::Params::Create(*args_);
791 797
792 if (!params) 798 if (!params)
793 return false; 799 return false;
794 800
795 GcdPrivateAPIImpl* gcd_api = GcdPrivateAPIImpl::Get(GetProfile()); 801 GcdPrivateAPIImpl* gcd_api = GcdPrivateAPIImpl::Get(GetProfile());
796 802
797 gcd_api->ConfirmCode( 803 gcd_api->ConfirmCode(
798 params->session_id, 804 params->session_id,
805 params->code,
799 base::Bind(&GcdPrivateConfirmCodeFunction::OnSessionEstablishedCallback, 806 base::Bind(&GcdPrivateConfirmCodeFunction::OnSessionEstablishedCallback,
800 this)); 807 this));
801 808
802 return true; 809 return true;
803 } 810 }
804 811
805 void GcdPrivateConfirmCodeFunction::OnSessionEstablishedCallback( 812 void GcdPrivateConfirmCodeFunction::OnSessionEstablishedCallback(
806 api::gcd_private::Status status) { 813 api::gcd_private::Status status) {
807 results_ = gcd_private::ConfirmCode::Results::Create(status); 814 results_ = gcd_private::ConfirmCode::Results::Create(status);
808 SendResponse(true); 815 SendResponse(true);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 } 935 }
929 936
930 GcdPrivateGetCommandsListFunction::~GcdPrivateGetCommandsListFunction() { 937 GcdPrivateGetCommandsListFunction::~GcdPrivateGetCommandsListFunction() {
931 } 938 }
932 939
933 bool GcdPrivateGetCommandsListFunction::RunAsync() { 940 bool GcdPrivateGetCommandsListFunction::RunAsync() {
934 return false; 941 return false;
935 } 942 }
936 943
937 } // namespace extensions 944 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/local_discovery/privetv3_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698