chromium/chrome/browser/ui/views/side_panel/customize_chrome/side_panel_controller_views.h

// Copyright 2022 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_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_VIEWS_H_
#define CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_VIEWS_H_

#include "base/callback_list.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/ui/customize_chrome/side_panel_controller.h"
#include "chrome/browser/ui/views/side_panel/side_panel_entry_observer.h"
#include "chrome/browser/ui/views/side_panel/side_panel_enums.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_section.h"
#include "content/public/browser/web_contents_observer.h"

class CustomizeChromeUI;
class SidePanelUI;

namespace tabs {
class TabInterface;
}  // namespace tabs

namespace views {
class View;
}

namespace customize_chrome {

// Responsible for implementing logic to create and register/deregister the
// customize chrome side panel. This implementation listens to the webcontents
// for a given tab and, on navigation completion, registers the sidepanel entry
// for the tab, if its possible to show the CustomizeChrome sidepanel.
class SidePanelControllerViews : public SidePanelController,
                                 public content::WebContentsObserver {};

}  // namespace customize_chrome

#endif  // CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_VIEWS_H_