chromium/ios/web/content/init/ios_content_renderer_client.cc

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

#import "ios/web/content/init/ios_content_renderer_client.h"

#import "components/js_injection/renderer/js_communication.h"

namespace web {

IOSContentRendererClient::IOSContentRendererClient() = default;
IOSContentRendererClient::~IOSContentRendererClient() = default;

void IOSContentRendererClient::RenderThreadStarted() {
  // TODO(crbug.com/40260088): Create and register a v8::Extension for receiving
  // messages from JavaScript.
}

void IOSContentRendererClient::RenderFrameCreated(
    content::RenderFrame* render_frame) {
  // As a RenderFrameObserver, JSCommunication handles destroying
  // itself when its RenderFrame is destroyed.
  new js_injection::JsCommunication(render_frame);
}

void IOSContentRendererClient::RunScriptsAtDocumentStart(
    content::RenderFrame* render_frame) {
  js_injection::JsCommunication* communication =
      js_injection::JsCommunication::Get(render_frame);
  communication->RunScriptsAtDocumentStart();
}

void IOSContentRendererClient::RunScriptsAtDocumentEnd(
    content::RenderFrame* render_frame) {
  // TODO(crbug.com/40260088): Inject document end scripts from
  // JavaScriptFeatures.
}

void IOSContentRendererClient::PrepareErrorPage(
    content::RenderFrame* render_frame,
    const blink::WebURLError& error,
    const std::string& http_method,
    content::mojom::AlternativeErrorPageOverrideInfoPtr
        alternative_error_page_info,
    std::string* error_html) {
  if (error_html) {
    *error_html = "This is an error page";
  }
}

void IOSContentRendererClient::PrepareErrorPageForHttpStatusError(
    content::RenderFrame* render_frame,
    const blink::WebURLError& error,
    const std::string& http_method,
    int http_status,
    content::mojom::AlternativeErrorPageOverrideInfoPtr
        alternative_error_page_info,
    std::string* error_html) {
  if (error_html) {
    *error_html = "This is an http status error page";
  }
}

}  // namespace web