// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Declares functions that implement brand-specific behavior. The definitions
// reside in brand-specific files that are only compiled when their respective
// branding is in use at build time.

#ifndef CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_
#define CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_

#include "base/strings/string16.h"
#include "chrome/installer/util/util_constants.h"

namespace base {
class FilePath;
class Version;
}  // namespace base

namespace installer {

// Communicates a change in install status to the updater. |archive_type|, if
// not UNKNOWN_ARCHIVE_TYPE, indicates what type of install/update is being
// applied. |install_status|, if not UNKNOWN_STATUS, indicates the result of the
// install/update.
void UpdateInstallStatus(installer::ArchiveType archive_type,
                         installer::InstallStatus install_status);

// Returns an opaque string holding data relating to the browser being
// uninstalled. This function is called before the product's Clients key is
// deleted. This blob is later passed to DoPostUninstallOperations.
base::string16 GetDistributionData();

// Performs brand-specific operations following unintsallation of the browser.
// |version| is the version of the browser being uninstalled. |local_data_path|
// |is a backup of the Local State file of the user performing the uninstall
// |operation. |distribution_data| is the string generated by
// |GetDistributionData().
void DoPostUninstallOperations(const base::Version& version,
                               const base::FilePath& local_data_path,
                               const base::string16& distribution_data);

}  // namespace installer

#endif  // CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_
