// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_ #define CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_ #include <ostream> #include <string> #include "base/check.h" #include "base/memory/raw_ptr.h" #include "base/values.h" #include "content/common/content_export.h" #include "content/public/browser/page.h" #include "content/public/browser/per_web_ui_browser_interface_broker.h" class GURL; namespace content { class RenderFrameHost; class WebUI; class WebUIBrowserInterfaceBrokerRegistry; // A WebUI page is controlled by the embedder's WebUIController object. It // manages the data source and message handlers. class CONTENT_EXPORT WebUIController { … }; // This macro declares a static variable inside the class that inherits from // WebUIController. The address of the static variable is used as the unique // Type for the subclass. #define WEB_UI_CONTROLLER_TYPE_DECL() … // This macro instantiates the static variable declared by the previous macro. // It must live in a .cc file to ensure that there is only one instantiation // of the static variable. #define WEB_UI_CONTROLLER_TYPE_IMPL(T) … } // namespace content #endif // CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_