public function testAccess(Request $request, EditorInterface $editor, EmbedButtonInterface $embed_button)
 {
     $text = $request->get('value');
     $response = new HtmlResponse(['#markup' => $text, '#cache' => ['contexts' => ['url.query_args:value']]]);
     if ($text == '') {
         $response->setStatusCode(404);
     }
     return $response;
 }
 /**
  * Sets headers on a response object.
  *
  * @param \Drupal\Core\Render\HtmlResponse $response
  *   The HTML response to update.
  * @param array $headers
  *   The headers to set, as an array. The items in this array should be as
  *   follows:
  *   - The header name.
  *   - The header value.
  *   - (optional) Whether to replace a current value with the new one, or add
  *     it to the others. If the value is not replaced, it will be appended,
  *     resulting in a header like this: 'Header: value1,value2'
  */
 protected function setHeaders(HtmlResponse $response, array $headers)
 {
     foreach ($headers as $values) {
         $name = $values[0];
         $value = $values[1];
         $replace = !empty($values[2]);
         // Drupal treats the HTTP response status code like a header, even though
         // it really is not.
         if (strtolower($name) === 'status') {
             $response->setStatusCode($value);
         } else {
             $response->headers->set($name, $value, $replace);
         }
     }
 }
 /**
  * Sets headers on a response object.
  *
  * @param \Drupal\Core\Render\HtmlResponse $response
  *   The HTML response to update.
  * @param array $headers
  *   The headers to set.
  */
 protected function setHeaders(HtmlResponse $response, array $headers)
 {
     foreach ($headers as $name => $value) {
         // Drupal treats the HTTP response status code like a header, even though
         // it really is not.
         if ($name === 'status') {
             $response->setStatusCode($value);
         }
         $response->headers->set($name, $value, FALSE);
     }
 }