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 COMPONENTS_COMPONENT_UPDATER_UPDATE_CHECKER_H_
6#define COMPONENTS_COMPONENT_UPDATER_UPDATE_CHECKER_H_
7
8#include <string>
9#include <vector>
10
11#include "base/callback.h"
12#include "base/macros.h"
13#include "base/memory/scoped_ptr.h"
14#include "components/component_updater/update_response.h"
15#include "url/gurl.h"
16
17class GURL;
18
19namespace net {
20class URLRequestContextGetter;
21}
22
23namespace component_updater {
24
25class Configurator;
26struct CrxUpdateItem;
27
28class UpdateChecker {
29 public:
30  typedef base::Callback<void(const GURL& original_url,
31                              int error,
32                              const std::string& error_message,
33                              const UpdateResponse::Results& results)>
34      UpdateCheckCallback;
35
36  virtual ~UpdateChecker() {}
37
38  // Initiates an update check for the |items_to_check|. |additional_attributes|
39  // provides a way to customize the <request> element. This value is inserted
40  // as-is, therefore it must be well-formed as an XML attribute string.
41  virtual bool CheckForUpdates(
42      const std::vector<CrxUpdateItem*>& items_to_check,
43      const std::string& additional_attributes,
44      const UpdateCheckCallback& update_check_callback) = 0;
45
46  static scoped_ptr<UpdateChecker> Create(const Configurator& config);
47
48 protected:
49  UpdateChecker() {}
50
51 private:
52  DISALLOW_COPY_AND_ASSIGN(UpdateChecker);
53};
54
55}  // namespace component_updater
56
57#endif  // COMPONENTS_COMPONENT_UPDATER_UPDATE_CHECKER_H_
58