diff --git a/shell/browser/api/electron_api_app.h b/shell/browser/api/electron_api_app.h index 96f47b273a1c..f03fc96d855f 100644 --- a/shell/browser/api/electron_api_app.h +++ b/shell/browser/api/electron_api_app.h @@ -50,9 +50,9 @@ namespace api { class App : public ElectronBrowserClient::Delegate, public gin::Wrappable, public gin_helper::EventEmitterMixin, - public BrowserObserver, - public content::GpuDataManagerObserver, - public content::BrowserChildProcessObserver { + private BrowserObserver, + private content::GpuDataManagerObserver, + private content::BrowserChildProcessObserver { public: using FileIconCallback = base::RepeatingCallback, const gfx::Image&)>; diff --git a/shell/browser/api/electron_api_auto_updater.h b/shell/browser/api/electron_api_auto_updater.h index aadbd7543c26..50c771fddbb0 100644 --- a/shell/browser/api/electron_api_auto_updater.h +++ b/shell/browser/api/electron_api_auto_updater.h @@ -18,7 +18,7 @@ namespace electron::api { class AutoUpdater : public gin::Wrappable, public gin_helper::EventEmitterMixin, public auto_updater::Delegate, - public WindowListObserver { + private WindowListObserver { public: static gin::Handle Create(v8::Isolate* isolate); diff --git a/shell/browser/api/electron_api_base_window.h b/shell/browser/api/electron_api_base_window.h index 46043f284f5e..c4bd0a879919 100644 --- a/shell/browser/api/electron_api_base_window.h +++ b/shell/browser/api/electron_api_base_window.h @@ -26,7 +26,7 @@ namespace electron::api { class View; class BaseWindow : public gin_helper::TrackableObject, - public NativeWindowObserver { + private NativeWindowObserver { public: static gin_helper::WrappableBase* New(gin_helper::Arguments* args); diff --git a/shell/browser/api/electron_api_browser_window.h b/shell/browser/api/electron_api_browser_window.h index e752d1ed595d..2ad029bc0351 100644 --- a/shell/browser/api/electron_api_browser_window.h +++ b/shell/browser/api/electron_api_browser_window.h @@ -16,8 +16,8 @@ namespace electron::api { class BrowserWindow : public BaseWindow, - public content::WebContentsObserver, - public ExtendedWebContentsObserver { + private content::WebContentsObserver, + private ExtendedWebContentsObserver { public: static gin_helper::WrappableBase* New(gin_helper::ErrorThrower thrower, gin::Arguments* args); diff --git a/shell/browser/api/electron_api_debugger.h b/shell/browser/api/electron_api_debugger.h index 74299619487f..deda78c6cd28 100644 --- a/shell/browser/api/electron_api_debugger.h +++ b/shell/browser/api/electron_api_debugger.h @@ -28,7 +28,7 @@ namespace electron::api { class Debugger : public gin::Wrappable, public gin_helper::EventEmitterMixin, public content::DevToolsAgentHostClient, - public content::WebContentsObserver { + private content::WebContentsObserver { public: static gin::Handle Create(v8::Isolate* isolate, content::WebContents* web_contents); diff --git a/shell/browser/api/electron_api_download_item.h b/shell/browser/api/electron_api_download_item.h index 7b240aa10ad8..f04953a8d3dc 100644 --- a/shell/browser/api/electron_api_download_item.h +++ b/shell/browser/api/electron_api_download_item.h @@ -24,7 +24,7 @@ namespace electron::api { class DownloadItem : public gin::Wrappable, public gin_helper::Pinnable, public gin_helper::EventEmitterMixin, - public download::DownloadItem::Observer { + private download::DownloadItem::Observer { public: static gin::Handle FromOrCreate(v8::Isolate* isolate, download::DownloadItem* item); diff --git a/shell/browser/api/electron_api_in_app_purchase.h b/shell/browser/api/electron_api_in_app_purchase.h index 4b646410545d..e89a7ca691ba 100644 --- a/shell/browser/api/electron_api_in_app_purchase.h +++ b/shell/browser/api/electron_api_in_app_purchase.h @@ -20,7 +20,7 @@ namespace electron::api { class InAppPurchase : public gin::Wrappable, public gin_helper::EventEmitterMixin, - public in_app_purchase::TransactionObserver { + private in_app_purchase::TransactionObserver { public: static gin::Handle Create(v8::Isolate* isolate); diff --git a/shell/browser/api/electron_api_menu.h b/shell/browser/api/electron_api_menu.h index 697fbd950fc0..c12fda7e9353 100644 --- a/shell/browser/api/electron_api_menu.h +++ b/shell/browser/api/electron_api_menu.h @@ -24,7 +24,7 @@ class Menu : public gin::Wrappable, public gin_helper::Constructible, public gin_helper::Pinnable, public ElectronMenuModel::Delegate, - public ElectronMenuModel::Observer { + private ElectronMenuModel::Observer { public: // gin_helper::Constructible static gin::Handle New(gin::Arguments* args); diff --git a/shell/browser/api/electron_api_native_theme.h b/shell/browser/api/electron_api_native_theme.h index 6be9c008e03b..a1f7798014b6 100644 --- a/shell/browser/api/electron_api_native_theme.h +++ b/shell/browser/api/electron_api_native_theme.h @@ -16,7 +16,7 @@ namespace electron::api { class NativeTheme : public gin::Wrappable, public gin_helper::EventEmitterMixin, - public ui::NativeThemeObserver { + private ui::NativeThemeObserver { public: static gin::Handle Create(v8::Isolate* isolate); diff --git a/shell/browser/api/electron_api_power_monitor.h b/shell/browser/api/electron_api_power_monitor.h index 01f3aced32f4..436fd9c0f87f 100644 --- a/shell/browser/api/electron_api_power_monitor.h +++ b/shell/browser/api/electron_api_power_monitor.h @@ -20,9 +20,9 @@ namespace electron::api { class PowerMonitor : public gin::Wrappable, public gin_helper::EventEmitterMixin, public gin_helper::Pinnable, - public base::PowerStateObserver, - public base::PowerSuspendObserver, - public base::PowerThermalObserver { + private base::PowerStateObserver, + private base::PowerSuspendObserver, + private base::PowerThermalObserver { public: static v8::Local Create(v8::Isolate* isolate); diff --git a/shell/browser/api/electron_api_push_notifications.h b/shell/browser/api/electron_api_push_notifications.h index 19f29d83d5dd..6f1e9f1215b7 100644 --- a/shell/browser/api/electron_api_push_notifications.h +++ b/shell/browser/api/electron_api_push_notifications.h @@ -21,7 +21,7 @@ class PushNotifications : public ElectronBrowserClient::Delegate, public gin::Wrappable, public gin_helper::EventEmitterMixin, - public BrowserObserver { + private BrowserObserver { public: static PushNotifications* Get(); static gin::Handle Create(v8::Isolate* isolate); diff --git a/shell/browser/api/electron_api_screen.h b/shell/browser/api/electron_api_screen.h index ca29a79f5d06..19ce4d40dbc6 100644 --- a/shell/browser/api/electron_api_screen.h +++ b/shell/browser/api/electron_api_screen.h @@ -24,7 +24,7 @@ namespace electron::api { class Screen : public gin::Wrappable, public gin_helper::EventEmitterMixin, - public display::DisplayObserver { + private display::DisplayObserver { public: static v8::Local Create(gin_helper::ErrorThrower error_thrower); diff --git a/shell/browser/api/electron_api_service_worker_context.h b/shell/browser/api/electron_api_service_worker_context.h index 9a6a6cd67162..52f617e59e0c 100644 --- a/shell/browser/api/electron_api_service_worker_context.h +++ b/shell/browser/api/electron_api_service_worker_context.h @@ -21,7 +21,7 @@ namespace api { class ServiceWorkerContext : public gin::Wrappable, public gin_helper::EventEmitterMixin, - public content::ServiceWorkerContextObserver { + private content::ServiceWorkerContextObserver { public: static gin::Handle Create( v8::Isolate* isolate, diff --git a/shell/browser/api/electron_api_session.cc b/shell/browser/api/electron_api_session.cc index 69e10b10f71b..191f632e7516 100644 --- a/shell/browser/api/electron_api_session.cc +++ b/shell/browser/api/electron_api_session.cc @@ -262,7 +262,7 @@ class ClearDataTask { // of a full |ClearDataTask|. This class manages its own lifetime, cleaning // itself up after the operation completes and notifies the task of the // result. - class ClearDataOperation : public BrowsingDataRemover::Observer { + class ClearDataOperation : private BrowsingDataRemover::Observer { public: static void Run(std::shared_ptr task, BrowsingDataRemover* remover, diff --git a/shell/browser/api/electron_api_session.h b/shell/browser/api/electron_api_session.h index 1efe2296fa2e..0af8a72f0c9f 100644 --- a/shell/browser/api/electron_api_session.h +++ b/shell/browser/api/electron_api_session.h @@ -65,12 +65,12 @@ class Session : public gin::Wrappable, public gin_helper::EventEmitterMixin, public gin_helper::CleanedUpAtExit, #if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER) - public SpellcheckHunspellDictionary::Observer, + private SpellcheckHunspellDictionary::Observer, #endif #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) - public extensions::ExtensionRegistryObserver, + private extensions::ExtensionRegistryObserver, #endif - public content::DownloadManager::Observer { + private content::DownloadManager::Observer { public: // Gets or creates Session from the |browser_context|. static gin::Handle CreateFrom( diff --git a/shell/browser/api/electron_api_tray.h b/shell/browser/api/electron_api_tray.h index 26429e9ee823..9eaebb506663 100644 --- a/shell/browser/api/electron_api_tray.h +++ b/shell/browser/api/electron_api_tray.h @@ -39,7 +39,7 @@ class Tray : public gin::Wrappable, public gin_helper::Constructible, public gin_helper::CleanedUpAtExit, public gin_helper::Pinnable, - public TrayIconObserver { + private TrayIconObserver { public: // gin_helper::Constructible static gin::Handle New(gin_helper::ErrorThrower thrower, diff --git a/shell/browser/api/electron_api_web_contents.h b/shell/browser/api/electron_api_web_contents.h index a34a4bbe805c..07fd3ad8daa8 100644 --- a/shell/browser/api/electron_api_web_contents.h +++ b/shell/browser/api/electron_api_web_contents.h @@ -111,7 +111,7 @@ class WebContents : public ExclusiveAccessContext, public gin_helper::CleanedUpAtExit, public content::WebContentsObserver, public content::WebContentsDelegate, - public content::RenderWidgetHost::InputEventObserver, + private content::RenderWidgetHost::InputEventObserver, public content::JavaScriptDialogManager, public InspectableWebContentsDelegate, public InspectableWebContentsViewDelegate, diff --git a/shell/browser/api/electron_api_web_contents_view.h b/shell/browser/api/electron_api_web_contents_view.h index 353086427ba6..b02c3a460d58 100644 --- a/shell/browser/api/electron_api_web_contents_view.h +++ b/shell/browser/api/electron_api_web_contents_view.h @@ -21,7 +21,7 @@ namespace electron::api { class WebContents; class WebContentsView : public View, - public content::WebContentsObserver, + private content::WebContentsObserver, public DraggableRegionProvider { public: // Create a new instance of WebContentsView. diff --git a/shell/browser/electron_api_ipc_handler_impl.h b/shell/browser/electron_api_ipc_handler_impl.h index 1a0ad3a0135d..96e9a620ebd5 100644 --- a/shell/browser/electron_api_ipc_handler_impl.h +++ b/shell/browser/electron_api_ipc_handler_impl.h @@ -20,7 +20,7 @@ class RenderFrameHost; namespace electron { class ElectronApiIPCHandlerImpl : public mojom::ElectronApiIPC, - public content::WebContentsObserver { + private content::WebContentsObserver { public: explicit ElectronApiIPCHandlerImpl( content::RenderFrameHost* render_frame_host, diff --git a/shell/browser/electron_browser_client.h b/shell/browser/electron_browser_client.h index 9f3f7fe8dfdf..39e6b90c7228 100644 --- a/shell/browser/electron_browser_client.h +++ b/shell/browser/electron_browser_client.h @@ -43,7 +43,7 @@ class PlatformNotificationService; class ElectronWebAuthenticationDelegate; class ElectronBrowserClient : public content::ContentBrowserClient, - public content::RenderProcessHostObserver { + private content::RenderProcessHostObserver { public: static ElectronBrowserClient* Get(); static void SetApplicationLocale(const std::string& locale); diff --git a/shell/browser/electron_web_contents_utility_handler_impl.h b/shell/browser/electron_web_contents_utility_handler_impl.h index 79bca6b664fe..2f0f07d007ed 100644 --- a/shell/browser/electron_web_contents_utility_handler_impl.h +++ b/shell/browser/electron_web_contents_utility_handler_impl.h @@ -21,7 +21,7 @@ class RenderFrameHost; namespace electron { class ElectronWebContentsUtilityHandlerImpl : public mojom::ElectronWebContentsUtility, - public content::WebContentsObserver { + private content::WebContentsObserver { public: explicit ElectronWebContentsUtilityHandlerImpl( content::RenderFrameHost* render_frame_host, diff --git a/shell/browser/file_select_helper.h b/shell/browser/file_select_helper.h index 27a2dbb0b20a..7ade0b04d394 100644 --- a/shell/browser/file_select_helper.h +++ b/shell/browser/file_select_helper.h @@ -41,7 +41,7 @@ class FileSelectHelper : public base::RefCountedThreadSafe< FileSelectHelper, content::BrowserThread::DeleteOnUIThread>, public ui::SelectFileDialog::Listener, - public content::WebContentsObserver, + private content::WebContentsObserver, private net::DirectoryLister::DirectoryListerDelegate { public: // disable copy diff --git a/shell/browser/hid/electron_hid_delegate.cc b/shell/browser/hid/electron_hid_delegate.cc index 10aa32c41dcf..91a174ab2c5f 100644 --- a/shell/browser/hid/electron_hid_delegate.cc +++ b/shell/browser/hid/electron_hid_delegate.cc @@ -41,7 +41,7 @@ namespace electron { // Manages the HidDelegate observers for a single browser context. class ElectronHidDelegate::ContextObservation - : public HidChooserContext::DeviceObserver { + : private HidChooserContext::DeviceObserver { public: ContextObservation(ElectronHidDelegate* parent, content::BrowserContext* browser_context) diff --git a/shell/browser/login_handler.h b/shell/browser/login_handler.h index 0e513f8c98b2..1f229baaa37d 100644 --- a/shell/browser/login_handler.h +++ b/shell/browser/login_handler.h @@ -22,7 +22,7 @@ namespace electron { // Handles HTTP basic auth. class LoginHandler : public content::LoginDelegate, - public content::WebContentsObserver { + private content::WebContentsObserver { public: LoginHandler(const net::AuthChallengeInfo& auth_info, content::WebContents* web_contents, diff --git a/shell/browser/native_window_views.h b/shell/browser/native_window_views.h index e5683cecf00d..81c39adfc003 100644 --- a/shell/browser/native_window_views.h +++ b/shell/browser/native_window_views.h @@ -38,8 +38,8 @@ gfx::Rect ScreenToDIPRect(HWND hwnd, const gfx::Rect& pixel_bounds); #endif class NativeWindowViews : public NativeWindow, - public views::WidgetObserver, - public ui::EventHandler { + private views::WidgetObserver, + private ui::EventHandler { public: NativeWindowViews(const gin_helper::Dictionary& options, NativeWindow* parent); diff --git a/shell/browser/osr/osr_render_widget_host_view.h b/shell/browser/osr/osr_render_widget_host_view.h index b674f7cfbcf6..2ce5204d9751 100644 --- a/shell/browser/osr/osr_render_widget_host_view.h +++ b/shell/browser/osr/osr_render_widget_host_view.h @@ -61,9 +61,9 @@ typedef base::RepeatingCallback OnPopupPaintCallback; class OffScreenRenderWidgetHostView : public content::RenderWidgetHostViewBase, - public content::RenderFrameMetadataProvider::Observer, + private content::RenderFrameMetadataProvider::Observer, public ui::CompositorDelegate, - public OffscreenViewProxyObserver { + private OffscreenViewProxyObserver { public: OffScreenRenderWidgetHostView(bool transparent, bool painting, diff --git a/shell/browser/osr/osr_web_contents_view.h b/shell/browser/osr/osr_web_contents_view.h index 18587533ba59..89bf556c0820 100644 --- a/shell/browser/osr/osr_web_contents_view.h +++ b/shell/browser/osr/osr_web_contents_view.h @@ -28,7 +28,7 @@ namespace electron { class OffScreenWebContentsView : public content::WebContentsView, public content::RenderViewHostDelegateView, - public NativeWindowObserver { + private NativeWindowObserver { public: OffScreenWebContentsView(bool transparent, const OnPaintCallback& callback); ~OffScreenWebContentsView() override; diff --git a/shell/browser/serial/electron_serial_delegate.h b/shell/browser/serial/electron_serial_delegate.h index dd12e4484eb3..986fa28a5709 100644 --- a/shell/browser/serial/electron_serial_delegate.h +++ b/shell/browser/serial/electron_serial_delegate.h @@ -20,7 +20,7 @@ namespace electron { class SerialChooserController; class ElectronSerialDelegate : public content::SerialDelegate, - public SerialChooserContext::PortObserver { + private SerialChooserContext::PortObserver { public: ElectronSerialDelegate(); ~ElectronSerialDelegate() override; diff --git a/shell/browser/ui/electron_desktop_window_tree_host_linux.h b/shell/browser/ui/electron_desktop_window_tree_host_linux.h index 27f81d4a9998..29bc4254a4b3 100644 --- a/shell/browser/ui/electron_desktop_window_tree_host_linux.h +++ b/shell/browser/ui/electron_desktop_window_tree_host_linux.h @@ -23,8 +23,8 @@ namespace electron { class ElectronDesktopWindowTreeHostLinux : public views::DesktopWindowTreeHostLinux, - public ui::NativeThemeObserver, - public ui::DeviceScaleFactorObserver { + private ui::NativeThemeObserver, + private ui::DeviceScaleFactorObserver { public: ElectronDesktopWindowTreeHostLinux( NativeWindowViews* native_window_view, diff --git a/shell/browser/ui/inspectable_web_contents.h b/shell/browser/ui/inspectable_web_contents.h index fb4d2adbe4cc..89d0d965ff58 100644 --- a/shell/browser/ui/inspectable_web_contents.h +++ b/shell/browser/ui/inspectable_web_contents.h @@ -34,7 +34,7 @@ class InspectableWebContentsView; class InspectableWebContents : public content::DevToolsAgentHostClient, - public content::WebContentsObserver, + private content::WebContentsObserver, public content::WebContentsDelegate, public DevToolsEmbedderMessageDispatcher::Delegate { public: diff --git a/shell/browser/ui/message_box_gtk.cc b/shell/browser/ui/message_box_gtk.cc index 51bb743b0d46..c882be2aaa0c 100644 --- a/shell/browser/ui/message_box_gtk.cc +++ b/shell/browser/ui/message_box_gtk.cc @@ -47,7 +47,7 @@ base::flat_map& GetDialogsMap() { return *dialogs; } -class GtkMessageBox : public NativeWindowObserver { +class GtkMessageBox : private NativeWindowObserver { public: explicit GtkMessageBox(const MessageBoxSettings& settings) : id_(settings.id), diff --git a/shell/browser/ui/views/autofill_popup_view.h b/shell/browser/ui/views/autofill_popup_view.h index 88420bb4cd74..cabc1182d567 100644 --- a/shell/browser/ui/views/autofill_popup_view.h +++ b/shell/browser/ui/views/autofill_popup_view.h @@ -58,8 +58,8 @@ class AutofillPopupChildView : public views::View { }; class AutofillPopupView : public views::WidgetDelegateView, - public views::WidgetFocusChangeListener, - public views::WidgetObserver, + private views::WidgetFocusChangeListener, + private views::WidgetObserver, public views::DragController { public: explicit AutofillPopupView(AutofillPopup* popup, diff --git a/shell/browser/ui/views/client_frame_view_linux.h b/shell/browser/ui/views/client_frame_view_linux.h index ce60e43c575a..05d5b5454f0c 100644 --- a/shell/browser/ui/views/client_frame_view_linux.h +++ b/shell/browser/ui/views/client_frame_view_linux.h @@ -29,8 +29,8 @@ namespace electron { class ClientFrameViewLinux : public FramelessView, - public ui::NativeThemeObserver, - public ui::WindowButtonOrderObserver { + private ui::NativeThemeObserver, + private ui::WindowButtonOrderObserver { METADATA_HEADER(ClientFrameViewLinux, FramelessView) public: diff --git a/shell/browser/ui/views/menu_bar.h b/shell/browser/ui/views/menu_bar.h index 0db03ae310a6..b2e1860ea2f0 100644 --- a/shell/browser/ui/views/menu_bar.h +++ b/shell/browser/ui/views/menu_bar.h @@ -21,8 +21,8 @@ class MenuButton; namespace electron { class MenuBar : public views::AccessiblePaneView, - public MenuDelegate::Observer, - public NativeWindowObserver { + private MenuDelegate::Observer, + private NativeWindowObserver { METADATA_HEADER(MenuBar, views::AccessiblePaneView) public: diff --git a/shell/browser/ui/views/win_caption_button_container.h b/shell/browser/ui/views/win_caption_button_container.h index f4568016af8e..308f35ca5375 100644 --- a/shell/browser/ui/views/win_caption_button_container.h +++ b/shell/browser/ui/views/win_caption_button_container.h @@ -27,7 +27,7 @@ class WinCaptionButton; // frame and browser window as needed. When extended horizontally, becomes a // grab bar for moving the window. class WinCaptionButtonContainer : public views::View, - public views::WidgetObserver { + private views::WidgetObserver { METADATA_HEADER(WinCaptionButtonContainer, views::View) public: diff --git a/shell/browser/usb/electron_usb_delegate.cc b/shell/browser/usb/electron_usb_delegate.cc index a90896e0fe1f..0e2e5c549ca5 100644 --- a/shell/browser/usb/electron_usb_delegate.cc +++ b/shell/browser/usb/electron_usb_delegate.cc @@ -88,7 +88,7 @@ namespace electron { // Manages the UsbDelegate observers for a single browser context. class ElectronUsbDelegate::ContextObservation - : public UsbChooserContext::DeviceObserver { + : private UsbChooserContext::DeviceObserver { public: ContextObservation(ElectronUsbDelegate* parent, content::BrowserContext* browser_context) diff --git a/shell/common/api/electron_api_url_loader.h b/shell/common/api/electron_api_url_loader.h index b0da4a727ba3..8b9f1f913401 100644 --- a/shell/common/api/electron_api_url_loader.h +++ b/shell/common/api/electron_api_url_loader.h @@ -46,8 +46,8 @@ namespace electron::api { class SimpleURLLoaderWrapper : public gin::Wrappable, public gin_helper::EventEmitterMixin, - public network::SimpleURLLoaderStreamConsumer, - public network::mojom::URLLoaderNetworkServiceObserver { + private network::SimpleURLLoaderStreamConsumer, + private network::mojom::URLLoaderNetworkServiceObserver { public: ~SimpleURLLoaderWrapper() override; static gin::Handle Create(gin::Arguments* args); diff --git a/shell/renderer/api/electron_api_ipc_renderer.cc b/shell/renderer/api/electron_api_ipc_renderer.cc index 317b93368749..7eceed45bd9f 100644 --- a/shell/renderer/api/electron_api_ipc_renderer.cc +++ b/shell/renderer/api/electron_api_ipc_renderer.cc @@ -42,7 +42,7 @@ RenderFrame* GetCurrentRenderFrame() { } class IPCRenderer : public gin::Wrappable, - public content::RenderFrameObserver { + private content::RenderFrameObserver { public: static gin::WrapperInfo kWrapperInfo; diff --git a/shell/renderer/api/electron_api_web_frame.cc b/shell/renderer/api/electron_api_web_frame.cc index ceb5608ab7dd..64dd277ae80a 100644 --- a/shell/renderer/api/electron_api_web_frame.cc +++ b/shell/renderer/api/electron_api_web_frame.cc @@ -272,7 +272,7 @@ class FrameSetSpellChecker : public content::RenderFrameVisitor { content::RenderFrame* main_frame_; }; -class SpellCheckerHolder final : public content::RenderFrameObserver { +class SpellCheckerHolder final : private content::RenderFrameObserver { public: // Find existing holder for the |render_frame|. static SpellCheckerHolder* FromRenderFrame( @@ -330,7 +330,7 @@ class SpellCheckerHolder final : public content::RenderFrameObserver { } // namespace class WebFrameRenderer : public gin::Wrappable, - public content::RenderFrameObserver { + private content::RenderFrameObserver { public: static gin::WrapperInfo kWrapperInfo;