BigPipeRegressionTestController.php

Same filename and directory in other branches
  1. 9 core/modules/big_pipe/tests/modules/big_pipe_regression_test/src/BigPipeRegressionTestController.php
  2. 8.9.x core/modules/big_pipe/tests/modules/big_pipe_regression_test/src/BigPipeRegressionTestController.php
  3. 11.x core/modules/big_pipe/tests/modules/big_pipe_regression_test/src/BigPipeRegressionTestController.php

Namespace

Drupal\big_pipe_regression_test

File

core/modules/big_pipe/tests/modules/big_pipe_regression_test/src/BigPipeRegressionTestController.php

View source
<?php

namespace Drupal\big_pipe_regression_test;

use Drupal\big_pipe\Render\BigPipeMarkup;
use Drupal\Component\Utility\Random;
use Drupal\Core\Security\TrustedCallbackInterface;
class BigPipeRegressionTestController implements TrustedCallbackInterface {
  const MARKER_2678662 = '<script>var hitsTheFloor = "</body>";</script>';
  const PLACEHOLDER_COUNT = 3000;
  
  /**
   * @see \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipeRegressionTest::testMultipleBodies_2678662()
   */
  public function regression2678662() {
    return [
      '#markup' => BigPipeMarkup::create(self::MARKER_2678662),
    ];
  }
  
  /**
   * @see \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipeRegressionTest::testMultipleBodies_2678662()
   */
  public function regression2802923() {
    return [
      '#prefix' => BigPipeMarkup::create('<p>Hi, my train will arrive at '),
      'time' => [
        '#lazy_builder' => [
          static::class . '::currentTime',
          [],
        ],
        '#create_placeholder' => TRUE,
      ],
      '#suffix' => BigPipeMarkup::create(' — will I still be able to catch the connection to the center?</p>'),
    ];
  }
  
  /**
   * A page with large content.
   *
   * @see \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipeRegressionTest::testBigPipeLargeContent
   */
  public function largeContent() {
    return [
      'item1' => [
        '#lazy_builder' => [
          static::class . '::largeContentBuilder',
          [],
        ],
        '#create_placeholder' => TRUE,
      ],
    ];
  }
  
  /**
   * A page with multiple nodes.
   *
   * @see \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipeRegressionTest::testMultipleReplacements
   */
  public function multipleReplacements() {
    $build = [];
    foreach (range(1, self::PLACEHOLDER_COUNT) as $length) {
      $build[] = [
        '#lazy_builder' => [
          static::class . '::renderRandomSentence',
          [
            $length,
          ],
        ],
        '#create_placeholder' => TRUE,
      ];
    }
    return $build;
  }
  
  /**
   * Renders large content.
   *
   * @see \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipeRegressionTest::testBigPipeLargeContent
   */
  public static function largeContentBuilder() {
    return [
      '#theme' => 'big_pipe_test_large_content',
      '#cache' => [
        'max-age' => 0,
      ],
    ];
  }
  
  /**
   * #lazy_builder callback; builds <time> markup with current time.
   *
   * @return array
   */
  public static function currentTime() {
    return [
      '#markup' => '<time datetime="' . date('Y-m-d', time()) . '"></time>',
      '#cache' => [
        'max-age' => 0,
      ],
    ];
  }
  
  /**
   * Renders a random length sentence.
   *
   * @param int $length
   *   The sentence length.
   *
   * @return array
   *   Render array.
   */
  public static function renderRandomSentence(int $length) : array {
    return [
      '#cache' => [
        'max-age' => 0,
      ],
      '#markup' => (new Random())->sentences($length),
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public static function trustedCallbacks() {
    return [
      'currentTime',
      'largeContentBuilder',
      'renderRandomSentence',
    ];
  }

}

Classes

Title Deprecated Summary
BigPipeRegressionTestController

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.