// Copyright 2019 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_DESKTOP_CAPTURE_DESKTOP_MEDIA_TAB_LIST_H_ #define CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_DESKTOP_MEDIA_TAB_LIST_H_ #include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h" #include "ui/base/metadata/metadata_header_macros.h" namespace views { class TableView; class View; } // namespace views namespace { class TabListModel; class TabListViewObserver; } // namespace // This class is one of the possible ListViews a DesktopMediaListController can // control. It displays a table of sources, one per line, with their "thumbnail" // scaled down and displayed as an icon on that line of the table. It is used to // display a list of tabs which are possible cast sources. // // Internally, this class has two helper classes: // * TabListModel, which is a ui::TableModel that proxies for DesktopMediaList - // it fetches data from the DesktopMediaList to populate the model, and // observes the DesktopMediaList to update the TableModel. // * TabListViewObserver, which is a TableViewObserver that notifies the // controller when the user takes an action on the TableView. class DesktopMediaTabList : public DesktopMediaListController::ListView { … }; #endif // CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_DESKTOP_MEDIA_TAB_LIST_H_