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

Side by Side Diff: cloud_print/gcp20/prototype/printer.cc

Issue 22184007: GCP2.0 Device: Instant AccessToken update on AuthFailed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 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
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 "cloud_print/gcp20/prototype/printer.h" 5 #include "cloud_print/gcp20/prototype/printer.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 void Printer::Stop() { 176 void Printer::Stop() {
177 dns_server_.Shutdown(); 177 dns_server_.Shutdown();
178 http_server_.Shutdown(); 178 http_server_.Shutdown();
179 requester_.reset(); 179 requester_.reset();
180 print_job_handler_.reset(); 180 print_job_handler_.reset();
181 xmpp_listener_.reset(); 181 xmpp_listener_.reset();
182 } 182 }
183 183
184 void Printer::OnAuthError() { 184 void Printer::OnAuthError() {
185 access_token_update_ = base::Time::Now(); 185 access_token_update_ = base::Time::UnixEpoch();
186 ChangeState(OFFLINE); 186 ReconnectIn(base::TimeDelta::FromSeconds(0));
187 // TODO(maksymb): Implement *instant* updating of access_token.
188 } 187 }
189 188
190 std::string Printer::GetAccessToken() { 189 std::string Printer::GetAccessToken() {
191 return access_token_; 190 return access_token_;
192 } 191 }
193 192
194 PrivetHttpServer::RegistrationErrorStatus Printer::RegistrationStart( 193 PrivetHttpServer::RegistrationErrorStatus Printer::RegistrationStart(
195 const std::string& user) { 194 const std::string& user) {
196 PrivetHttpServer::RegistrationErrorStatus status = CheckCommonRegErrors(user); 195 PrivetHttpServer::RegistrationErrorStatus status = CheckCommonRegErrors(user);
197 if (status != PrivetHttpServer::REG_ERROR_OK) 196 if (status != PrivetHttpServer::REG_ERROR_OK)
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 return "connecting"; 748 return "connecting";
750 case NOT_CONFIGURED: 749 case NOT_CONFIGURED:
751 return "not-configured"; 750 return "not-configured";
752 751
753 default: 752 default:
754 NOTREACHED(); 753 NOTREACHED();
755 return ""; 754 return "";
756 } 755 }
757 } 756 }
758 757
758 void Printer::ReconnectIn(const base::TimeDelta& delay) {
759 requester_.reset();
760 xmpp_listener_.reset();
761 base::MessageLoop::current()->PostDelayedTask(
gene 2013/08/05 20:56:28 Since this is a post task, it is possible you can
maksymb 2013/08/06 21:45:54 Done.
gene 2013/08/08 02:01:55 Could you please explain how this has been fixed?
maksymb 2013/08/08 18:35:46 /privet/accesstoken can be processed only in OnIdl
762 FROM_HERE,
763 base::Bind(&Printer::TryConnect, AsWeakPtr()),
764 delay);
765 }
766
759 bool Printer::ChangeState(ConnectionState new_state) { 767 bool Printer::ChangeState(ConnectionState new_state) {
760 if (connection_state_ == new_state) 768 if (connection_state_ == new_state)
761 return false; 769 return false;
762 770
763 connection_state_ = new_state; 771 connection_state_ = new_state;
764 LOG(INFO) << base::StringPrintf( 772 LOG(INFO) << base::StringPrintf(
765 "Printer is now %s (%s)", 773 "Printer is now %s (%s)",
766 ConnectionStateToString(connection_state_).c_str(), 774 ConnectionStateToString(connection_state_).c_str(),
767 IsRegistered() ? "registered" : "unregistered"); 775 IsRegistered() ? "registered" : "unregistered");
768 776
769 dns_server_.UpdateMetadata(CreateTxt()); 777 dns_server_.UpdateMetadata(CreateTxt());
770 778
771 switch (connection_state_) { 779 if (connection_state_ == OFFLINE)
772 case CONNECTING: 780 ReconnectIn(base::TimeDelta::FromSeconds(kReconnectTimeout));
773 break;
774
775 case ONLINE:
776 break;
777
778 case OFFLINE:
779 requester_.reset();
780 xmpp_listener_.reset();
781 base::MessageLoop::current()->PostDelayedTask(
782 FROM_HERE,
783 base::Bind(&Printer::TryConnect, AsWeakPtr()),
784 base::TimeDelta::FromSeconds(kReconnectTimeout));
785
786 case NOT_CONFIGURED:
787 break;
788
789 default:
790 NOTREACHED();
791 }
792 781
793 return true; 782 return true;
794 } 783 }
795 784
OLDNEW
« cloud_print/gcp20/prototype/cloud_print_requester.cc ('K') | « cloud_print/gcp20/prototype/printer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698