910e62b5创建于 1月15日历史提交
// Copyright 2024 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_BACKGROUND_GLIC_GLIC_CONTROLLER_H_
#define CHROME_BROWSER_BACKGROUND_GLIC_GLIC_CONTROLLER_H_

#include "chrome/browser/glic/host/glic.mojom.h"

namespace glic {

// This class is owned by GlicBackgroundModeManager and is responsible for
// showing/hiding the glic UI when the status icon is clicked or the appropriate
// menu item is selected.
class GlicController {
 public:
  GlicController();
  virtual ~GlicController();
  GlicController(const GlicController&) = delete;
  GlicController& operator=(const GlicController&) = delete;

  // Toggles the glic UI.
  virtual void Toggle(mojom::InvocationSource source);

  // Shows the glic UI.
  virtual void Show(mojom::InvocationSource source);

  // Forcibly closes glic UI.
  virtual void Close();

  // Returns true if the glic UI is visible.
  virtual bool IsShowing() const;

 private:
  // Helper that implements both Toggle and Show.
  void ToggleUI(bool prevent_close, mojom::InvocationSource source);
};

}  // namespace glic

#endif  // CHROME_BROWSER_BACKGROUND_GLIC_GLIC_CONTROLLER_H_