chromium/chrome/browser/ui/ash/shelf/lacros_shelf_item_controller.h

// 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_ASH_SHELF_LACROS_SHELF_ITEM_CONTROLLER_H_
#define CHROME_BROWSER_UI_ASH_SHELF_LACROS_SHELF_ITEM_CONTROLLER_H_

#include "ash/public/cpp/shelf_item_delegate.h"
#include "ash/public/cpp/shelf_model_observer.h"
#include "ash/public/cpp/shelf_types.h"

namespace aura {
class Window;
}  // namespace aura

// This is a common base shelf item controller for windows that are owned by
// Lacros.
class LacrosShelfItemController : public ash::ShelfItemDelegate {
 public:
  explicit LacrosShelfItemController(const ash::ShelfID& shelf_id)
      : ash::ShelfItemDelegate(shelf_id) {}

  // This method is called by LacrosShelfItemTracker to hand off a window to the
  // controller.
  virtual void AddWindow(aura::Window* window) = 0;

  // Shelf item must have a non-empty title for accessibility.
  virtual std::u16string GetTitle() = 0;
};

#endif  // CHROME_BROWSER_UI_ASH_SHELF_LACROS_SHELF_ITEM_CONTROLLER_H_