chromium/ios/web/public/webui/web_ui_ios_controller.h

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_CONTROLLER_H_
#define IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_CONTROLLER_H_

#include <string>
#include <string_view>

#import "base/memory/raw_ptr.h"

class GURL;

namespace web {

class WebUIIOS;

// A WebUIIOS page is controlled by the embedder's WebUIIOSController object. It
// manages the data source and message handlers.
class WebUIIOSController {
 public:
  WebUIIOSController(WebUIIOS* web_ui, const std::string& host)
      : web_ui_(web_ui), host_(host) {}
  virtual ~WebUIIOSController() {}

  // Allows the controller to override handling all messages from the page.
  // Return true if the message handling was overridden.
  virtual bool OverrideHandleWebUIIOSMessage(const GURL& source_url,
                                             std::string_view message);

  WebUIIOS* web_ui() const { return web_ui_; }

  // Gets the host associated with this WebUIIOSController.
  std::string GetHost() const { return host_; }

 private:
  raw_ptr<WebUIIOS> web_ui_;
  std::string host_;
};

}  // namespace web

#endif  // IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_CONTROLLER_H_