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 #ifndef CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_WIPEOUT_H_ 6 #define CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_WIPEOUT_H_ 7 8 #include <list> 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "chrome/service/cloud_print/cloud_print_url_fetcher.h" 13 #include "url/gurl.h" 14 15 namespace cloud_print { 16 17 // CloudPrintWipeout unregisters list of printers from the cloudprint service. 18 class CloudPrintWipeout : public CloudPrintURLFetcherDelegate { 19 public: 20 class Client { 21 public: 22 virtual void OnUnregisterPrintersComplete() = 0; 23 protected: 24 virtual ~Client() {} 25 }; 26 27 CloudPrintWipeout(Client* client, const GURL& cloud_print_server_url); 28 virtual ~CloudPrintWipeout(); 29 30 void UnregisterPrinters(const std::string& auth_token, 31 const std::list<std::string>& printer_ids); 32 33 // CloudPrintURLFetcher::Delegate implementation. 34 virtual CloudPrintURLFetcher::ResponseAction HandleJSONData( 35 const net::URLFetcher* source, 36 const GURL& url, 37 base::DictionaryValue* json_data, 38 bool succeeded) OVERRIDE; 39 virtual void OnRequestGiveUp() OVERRIDE; 40 virtual CloudPrintURLFetcher::ResponseAction OnRequestAuthError() OVERRIDE; 41 virtual std::string GetAuthHeader() OVERRIDE; 42 43 private: 44 void UnregisterNextPrinter(); 45 46 // CloudPrintWipeout client. 47 Client* client_; 48 // Cloud Print server url. 49 GURL cloud_print_server_url_; 50 // The CloudPrintURLFetcher instance for the current request. 51 scoped_refptr<CloudPrintURLFetcher> request_; 52 // Auth token. 53 std::string auth_token_; 54 // List of printer to unregister 55 std::list<std::string> printer_ids_; 56 57 DISALLOW_COPY_AND_ASSIGN(CloudPrintWipeout); 58 }; 59 60 } // namespace cloud_print 61 62 #endif // CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_WIPEOUT_H_ 63 64