Home | History | Annotate | Download | only in cloud_print
      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