910e62b5创建于 1月15日历史提交
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef EXTENSIONS_BROWSER_UPDATER_EXTENSION_UPDATE_DATA_H_
#define EXTENSIONS_BROWSER_UPDATER_EXTENSION_UPDATE_DATA_H_

#include <map>
#include <optional>
#include <string>

#include "base/functional/callback_forward.h"

namespace base {
class Version;
}

namespace extensions {

struct ExtensionUpdateData;
struct ExtensionUpdateCheckParams;

using ExtensionUpdateDataMap = std::map<std::string, ExtensionUpdateData>;

// Called with the extension id and version of the update that was
// found.
using UpdateFoundCallback =
    base::RepeatingCallback<void(const std::string&, const base::Version&)>;

// This struct contains update information for a specific extension.
struct ExtensionUpdateData {
  ExtensionUpdateData();
  ExtensionUpdateData(const ExtensionUpdateData& other);
  ~ExtensionUpdateData();

  std::string install_source;
  bool is_corrupt_reinstall{false};
  std::optional<std::string> pending_version;
  std::optional<std::string> pending_fingerprint;
};

// The basic structure for an extension update check request, which
// can contain a collection of extensions.
struct ExtensionUpdateCheckParams {
  enum UpdateCheckPriority {
    BACKGROUND,
    FOREGROUND,
  };

  ExtensionUpdateCheckParams();
  ExtensionUpdateCheckParams(const ExtensionUpdateCheckParams& other);
  ~ExtensionUpdateCheckParams();

  ExtensionUpdateDataMap update_info;
  UpdateCheckPriority priority;
  bool install_immediately;
};

}  // namespace extensions

#endif  // EXTENSIONS_BROWSER_UPDATER_EXTENSION_UPDATE_DATA_H_