1// Copyright 2014 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_BROWSER_LOCAL_DISCOVERY_CLOUD_DEVICE_LIST_H_
6#define CHROME_BROWSER_LOCAL_DISCOVERY_CLOUD_DEVICE_LIST_H_
7
8#include <string>
9#include <vector>
10
11#include "base/values.h"
12#include "chrome/browser/local_discovery/cloud_device_list_delegate.h"
13#include "chrome/browser/local_discovery/gcd_api_flow.h"
14
15namespace local_discovery {
16
17class CloudDeviceList : public GCDApiFlowRequest {
18 public:
19  typedef std::vector<CloudDeviceListDelegate::Device> DeviceList;
20  typedef DeviceList::const_iterator iterator;
21
22  explicit CloudDeviceList(CloudDeviceListDelegate* delegate);
23  virtual ~CloudDeviceList();
24
25  virtual void OnGCDAPIFlowError(GCDApiFlow::Status status) OVERRIDE;
26
27  virtual void OnGCDAPIFlowComplete(
28      const base::DictionaryValue& value) OVERRIDE;
29
30  virtual GURL GetURL() OVERRIDE;
31
32 private:
33  bool FillDeviceDetails(const base::DictionaryValue& value,
34                         CloudDeviceListDelegate::Device* device);
35
36  CloudDeviceListDelegate* delegate_;
37};
38
39}  // namespace local_discovery
40
41#endif  // CHROME_BROWSER_LOCAL_DISCOVERY_CLOUD_DEVICE_LIST_H_
42