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_