• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
~Client()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