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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_LOCAL_DISCOVERY_CLOUD_PRINT_PRINTER_LIST_H_
6 #define CHROME_BROWSER_LOCAL_DISCOVERY_CLOUD_PRINT_PRINTER_LIST_H_
12 #include "chrome/browser/local_discovery/cloud_print_base_api_flow.h"
14 namespace local_discovery {
16 class CloudPrintPrinterList : public CloudPrintBaseApiFlow::Delegate {
22 virtual void OnCloudPrintPrinterListReady() = 0;
23 virtual void OnCloudPrintPrinterListUnavailable() = 0;
26 struct PrinterDetails {
31 std::string display_name;
32 std::string description;
33 // TODO(noamsml): std::string user;
36 typedef std::vector<PrinterDetails> PrinterList;
37 typedef PrinterList::const_iterator iterator;
39 CloudPrintPrinterList(net::URLRequestContextGetter* request_context,
40 const std::string& cloud_print_url,
41 OAuth2TokenService* token_service,
42 const std::string& account_id,
44 virtual ~CloudPrintPrinterList();
48 virtual void OnCloudPrintAPIFlowError(
49 CloudPrintBaseApiFlow* flow,
50 CloudPrintBaseApiFlow::Status status) OVERRIDE;
52 virtual void OnCloudPrintAPIFlowComplete(
53 CloudPrintBaseApiFlow* flow,
54 const base::DictionaryValue* value) OVERRIDE;
56 const PrinterDetails* GetDetailsFor(const std::string& id);
58 iterator begin() { return printer_list_.begin(); }
59 iterator end() { return printer_list_.end(); }
61 CloudPrintBaseApiFlow* GetOAuth2ApiFlowForTests() {
66 typedef std::map<std::string /*ID*/, int /* index in printer_list_ */>
69 bool FillPrinterDetails(const base::DictionaryValue* printer_value,
70 PrinterDetails* printer_details);
72 scoped_refptr<net::URLRequestContextGetter> request_context_;
74 PrinterIDMap printer_id_map_;
75 PrinterList printer_list_;
77 CloudPrintBaseApiFlow api_flow_;
80 } // namespace local_discovery
82 #endif // CHROME_BROWSER_LOCAL_DISCOVERY_CLOUD_PRINT_PRINTER_LIST_H_