blob: 71081c1e5aba0f4056c0116d45cf7e45ec5ce59e [file] [log] [blame]
// Copyright 2016 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_UI_ANDROID_INFOBARS_DUPLICATE_DOWNLOAD_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_INFOBARS_DUPLICATE_DOWNLOAD_INFOBAR_H_
#include "base/android/scoped_java_ref.h"
#include "components/infobars/android/confirm_infobar.h"
namespace android {
class DuplicateDownloadInfoBarDelegate;
}
// Records user interactions with the duplicate download infobar.
// Used in UMA, do not remove, change or reuse existing entries.
// Update histograms.xml and enums.xml when adding entries.
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.infobar
enum class DuplicateDownloadInfobarEvent {
// Infobar was shown.
kShown = 0,
// Accepted the duplicate download.
kAccepted = 1,
// Canceled the duplicate download.
kCanceled = 2,
// Link on the infobar is clicked.
kLinkClicked = 3,
// Dismissed the duplicate download.
kDismissed = 4,
kCount
};
// A native-side implementation of an infobar to ask whether to continue
// downloading if target file already exists.
class DuplicateDownloadInfoBar : public infobars::ConfirmInfoBar {
public:
static std::unique_ptr<infobars::InfoBar> CreateInfoBar(
std::unique_ptr<android::DuplicateDownloadInfoBarDelegate> delegate);
DuplicateDownloadInfoBar(const DuplicateDownloadInfoBar&) = delete;
DuplicateDownloadInfoBar& operator=(const DuplicateDownloadInfoBar&) = delete;
~DuplicateDownloadInfoBar() override;
static void RecordDuplicateDownloadInfobarEvent(
bool is_offline_page,
DuplicateDownloadInfobarEvent event);
private:
explicit DuplicateDownloadInfoBar(
std::unique_ptr<android::DuplicateDownloadInfoBarDelegate> delegate);
// ConfirmInfoBar:
base::android::ScopedJavaLocalRef<jobject> CreateRenderInfoBar(
JNIEnv* env,
const ResourceIdMapper& resource_id_mapper) override;
android::DuplicateDownloadInfoBarDelegate* GetDelegate();
};
#endif // CHROME_BROWSER_UI_ANDROID_INFOBARS_DUPLICATE_DOWNLOAD_INFOBAR_H_