/**
  * Tests the initial values returned by state methods
  */
 public function testInitialSetup()
 {
     $extension = new NewRelicExtension($this->newRelic, $this->interactor);
     $this->assertFalse($extension->isHeaderCalled());
     $this->assertFalse($extension->isFooterCalled());
     $this->assertFalse($extension->isUsed());
 }
 /**
  * On core response
  *
  * @param FilterResponseEvent $event
  */
 public function onCoreResponse(FilterResponseEvent $event)
 {
     if (null === $this->newRelicTwigExtension || false === $this->newRelicTwigExtension->isUsed()) {
         foreach ($this->newRelic->getCustomMetrics() as $name => $value) {
             $this->interactor->addCustomMetric($name, $value);
         }
         foreach ($this->newRelic->getCustomParameters() as $name => $value) {
             $this->interactor->addCustomParameter($name, $value);
         }
     }
     if ($this->instrument) {
         if (null === $this->newRelicTwigExtension || false === $this->newRelicTwigExtension->isUsed()) {
             $this->interactor->disableAutoRUM();
         }
         // Some requests might not want to get instrumented
         if ($event->getRequest()->attributes->get('_instrument', true)) {
             $response = $event->getResponse();
             // We can only instrument HTML responses
             if (substr($response->headers->get('Content-Type'), 0, 9) == 'text/html') {
                 $responseContent = $response->getContent();
                 if (null === $this->newRelicTwigExtension || false === $this->newRelicTwigExtension->isHeaderCalled()) {
                     $responseContent = preg_replace('/<\\s*head\\s*>/', '$0' . $this->interactor->getBrowserTimingHeader(), $responseContent);
                 }
                 if (null === $this->newRelicTwigExtension || false === $this->newRelicTwigExtension->isFooterCalled()) {
                     $responseContent = preg_replace('/<\\s*\\/\\s*body\\s*>/', $this->interactor->getBrowserTimingFooter() . '$0', $responseContent);
                 }
                 if ($responseContent) {
                     $response->setContent($responseContent);
                 }
             }
         }
     }
     if ($this->symfonyCache) {
         $this->interactor->endTransaction();
     }
 }