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 3 // found in the LICENSE file. 4 5 #include "chrome/service/cloud_print/cloud_print_wipeout.h" 6 7 #include "chrome/common/cloud_print/cloud_print_constants.h" 8 #include "chrome/common/cloud_print/cloud_print_helpers.h" 9 10 const int kMaxWipeoutAttempts = 3; 11 12 namespace cloud_print { 13 14 CloudPrintWipeout::CloudPrintWipeout(Client* client, 15 const GURL& cloud_print_server_url) 16 : client_(client), cloud_print_server_url_(cloud_print_server_url) { 17 } 18 CloudPrintWipeout::~CloudPrintWipeout() { 19 } 20 21 void CloudPrintWipeout::UnregisterPrinters( 22 const std::string& auth_token, 23 const std::list<std::string>& printer_ids) { 24 auth_token_ = auth_token; 25 printer_ids_ = printer_ids; 26 UnregisterNextPrinter(); 27 } 28 29 void CloudPrintWipeout::UnregisterNextPrinter() { 30 if (printer_ids_.empty()) { 31 client_->OnUnregisterPrintersComplete(); 32 return; 33 } 34 35 std::string printer_id = printer_ids_.front(); 36 printer_ids_.pop_front(); 37 38 GURL url = GetUrlForPrinterDelete(cloud_print_server_url_, 39 printer_id, 40 "connector_disabled"); 41 request_ = CloudPrintURLFetcher::Create(); 42 request_->StartGetRequest(CloudPrintURLFetcher::REQUEST_UNREGISTER, 43 url, this, kMaxWipeoutAttempts, std::string()); 44 } 45 46 CloudPrintURLFetcher::ResponseAction CloudPrintWipeout::HandleJSONData( 47 const net::URLFetcher* source, 48 const GURL& url, 49 base::DictionaryValue* json_data, 50 bool succeeded) { 51 // We don't care if delete was successful or not here. 52 UnregisterNextPrinter(); 53 return CloudPrintURLFetcher::STOP_PROCESSING; 54 } 55 56 void CloudPrintWipeout::OnRequestGiveUp() { 57 UnregisterNextPrinter(); 58 } 59 60 CloudPrintURLFetcher::ResponseAction CloudPrintWipeout::OnRequestAuthError() { 61 // We can't recover from auth error. Report completion to stop service. 62 client_->OnUnregisterPrintersComplete(); 63 return CloudPrintURLFetcher::STOP_PROCESSING; 64 } 65 66 std::string CloudPrintWipeout::GetAuthHeader() { 67 return GetCloudPrintAuthHeader(auth_token_); 68 } 69 70 } // namespace cloud_print 71