// 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_LACROS_MULTITASK_MENU_NUDGE_DELEGATE_LACROS_H_
#define CHROME_BROWSER_LACROS_MULTITASK_MENU_NUDGE_DELEGATE_LACROS_H_
#include "base/values.h"
#include "chromeos/crosapi/mojom/prefs.mojom.h"
#include "chromeos/ui/frame/multitask_menu/multitask_menu_nudge_controller.h"
// Lacros implementation of the nudge controller delegate that lets us get and
// set pref values from the ash active profile via mojo.
class MultitaskMenuNudgeDelegateLacros
: public chromeos::MultitaskMenuNudgeController::Delegate {
public:
using GetPreferencesCallback =
chromeos::MultitaskMenuNudgeController::GetPreferencesCallback;
static constexpr int kTabletNudgeAdditionalYOffset = 6;
MultitaskMenuNudgeDelegateLacros();
MultitaskMenuNudgeDelegateLacros(const MultitaskMenuNudgeDelegateLacros&) =
delete;
MultitaskMenuNudgeDelegateLacros& operator=(
const MultitaskMenuNudgeDelegateLacros&) = delete;
~MultitaskMenuNudgeDelegateLacros() override;
// chromeos::MultitaskMenuNudgeController::Delegate:
int GetTabletNudgeYOffset() const override;
void GetNudgePreferences(bool tablet_mode,
GetPreferencesCallback callback) override;
void SetNudgePreferences(bool tablet_mode,
int count,
base::Time time) override;
bool IsUserNewOrGuest() const override;
private:
using PrefPair = std::pair<crosapi::mojom::PrefPath, base::Value>;
// Callback ran when we got either pref from the pref service. Runs
// `callback`, which is part of a barrier callback.
void OnGetPreference(base::OnceCallback<void(PrefPair)> callback,
crosapi::mojom::PrefPath pref_path,
std::optional<base::Value> value);
// Callback ran when we got both our prefs from the pref service. Parses the
// values and then uses `callback` to send them to the prefs requester.
void OnGotAllPreferences(GetPreferencesCallback callback,
std::vector<PrefPair> pref_values);
base::WeakPtrFactory<MultitaskMenuNudgeDelegateLacros> weak_ptr_factory_{
this};
};
#endif // CHROME_BROWSER_LACROS_MULTITASK_MENU_NUDGE_DELEGATE_LACROS_H_