chromium/chrome/browser/download/bubble/download_bubble_prefs.h

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

#ifndef CHROME_BROWSER_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_PREFS_H_
#define CHROME_BROWSER_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_PREFS_H_

#include "chrome/browser/profiles/profile.h"

namespace download {

// Called when deciding whether to show the bubble or the old download shelf UI.
bool IsDownloadBubbleEnabled();

// Called when deciding whether to show or hide the bubble.
bool ShouldShowDownloadBubble(Profile* profile);

// The enterprise download connectors can be enabled in blocking or nonblocking
// mode. This returns false if the connector is disabled.
bool DoesDownloadConnectorBlock(Profile* profile, const GURL& url);

// Whether the partial view is controlled by prefs. If not controlled by prefs,
// the partial view defaults to disabled.
bool IsDownloadBubblePartialViewControlledByPref();

// Whether the partial view should be shown automatically when downloads are
// finished.
bool IsDownloadBubblePartialViewEnabled(Profile* profile);

// Set the pref governing whether the partial view should be shown automatically
// when downloads are finished. Note that on Lacros, the pref may be ignored
// if the SysUI integration is enabled.
void SetDownloadBubblePartialViewEnabled(Profile* profile, bool enabled);

// Whether the setting is controlled by pref and is the default value (not set
// by the user).
bool IsDownloadBubblePartialViewEnabledDefaultPrefValue(Profile* profile);

// The number of partial view impressions.
int DownloadBubblePartialViewImpressions(Profile* profile);
void SetDownloadBubblePartialViewImpressions(Profile* profile, int count);

}  // namespace download

#endif  // CHROME_BROWSER_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_PREFS_H_