// Copyright 2023 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_WEBUI_ASH_OS_FEEDBACK_DIALOG_H_
#define CHROME_BROWSER_UI_WEBUI_ASH_OS_FEEDBACK_DIALOG_H_
#include "base/functional/callback_forward.h"
#include "base/values.h"
#include "chrome/browser/ui/webui/ash/system_web_dialog_delegate.h"
#include "extensions/common/api/feedback_private.h"
namespace ash {
class OsFeedbackDialog : public SystemWebDialogDelegate {
public:
// Shows a Feedback dialog using the specified BrowserContext (or Profile).
// If |parent| is not null, the dialog will be parented to |parent|.
// Otherwise it will be attached to either the AlwaysOnTop container or the
// LockSystemModal container, depending on the session state at creation.
// The `callback` will be invoked after a new dialog or an existing one has
// been shown.
static void ShowDialogAsync(
content::BrowserContext* context,
const extensions::api::feedback_private::FeedbackInfo& info,
base::OnceClosure callback,
gfx::NativeWindow parent = nullptr);
// Find the native window of the dialog.
static gfx::NativeWindow FindDialogWindow();
protected:
explicit OsFeedbackDialog(base::Value::Dict feedback_info);
OsFeedbackDialog(const OsFeedbackDialog&) = delete;
OsFeedbackDialog& operator=(const OsFeedbackDialog&) = delete;
~OsFeedbackDialog() override;
private:
// SystemWebDialogDelegate:
void GetDialogSize(gfx::Size* size) const override;
std::string GetDialogArgs() const override;
// Used to populate feedback context when launched from Dialog (eg. from login
// screen).
const base::Value::Dict feedback_info_;
};
} // namespace ash
#endif // CHROME_BROWSER_UI_WEBUI_ASH_OS_FEEDBACK_DIALOG_H_