chromium/ios/web/shell/shell_web_client.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_SHELL_SHELL_WEB_CLIENT_H_
#define IOS_WEB_SHELL_SHELL_WEB_CLIENT_H_

#include <memory>
#include <string_view>

#import "base/memory/raw_ptr.h"
#import "ios/web/public/web_client.h"

namespace web {
class BrowserState;
class ShellBrowserState;
class ShellWebMainParts;

class ShellWebClient : public WebClient {
 public:
  ShellWebClient();

  ShellWebClient(const ShellWebClient&) = delete;
  ShellWebClient& operator=(const ShellWebClient&) = delete;

  ~ShellWebClient() override;

  // WebClient implementation.
  std::unique_ptr<WebMainParts> CreateWebMainParts() override;
  std::string GetUserAgent(UserAgentType type) const override;
  std::string_view GetDataResource(
      int resource_id,
      ui::ResourceScaleFactor scale_factor) const override;
  base::RefCountedMemory* GetDataResourceBytes(int resource_id) const override;
  void BindInterfaceReceiverFromMainFrame(
      WebState* web_state,
      mojo::GenericPendingReceiver receiver) override;
  bool EnableLongPressUIContextMenu() const override;
  bool EnableWebInspector(BrowserState* browser_state) const override;

  ShellBrowserState* browser_state() const;

 private:
  raw_ptr<ShellWebMainParts> web_main_parts_;
};

}  // namespace web

#endif  // IOS_WEB_SHELL_SHELL_WEB_CLIENT_H_