// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_UPDATE_CLIENT_UPDATE_CHECKER_H_ #define COMPONENTS_UPDATE_CLIENT_UPDATE_CHECKER_H_ #include #include #include #include "base/callback.h" #include "base/containers/flat_map.h" #include "base/memory/ref_counted.h" #include "components/update_client/component.h" #include "components/update_client/protocol_parser.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "url/gurl.h" namespace update_client { class Configurator; class PersistedData; struct UpdateContext; class UpdateChecker { public: using UpdateCheckCallback = base::OnceCallback& results, ErrorCategory error_category, int error, int retry_after_sec)>; using Factory = std::unique_ptr (*)(scoped_refptr config, PersistedData* persistent); UpdateChecker(const UpdateChecker&) = delete; UpdateChecker& operator=(const UpdateChecker&) = delete; virtual ~UpdateChecker() = default; // Initiates an update check for the components specified by their ids. // `update_context` contains the updateable apps. `additional_attributes` // specifies any extra request data to send. On completion, the state of // `components` is mutated as required by the server response received. virtual void CheckForUpdates( scoped_refptr update_context, const base::flat_map& additional_attributes, UpdateCheckCallback update_check_callback) = 0; static std::unique_ptr Create( scoped_refptr config, PersistedData* persistent); protected: UpdateChecker() = default; }; } // namespace update_client #endif // COMPONENTS_UPDATE_CLIENT_UPDATE_CHECKER_H_