diff --git a/core/core.services.yml b/core/core.services.yml
index 53a2725..c350845 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -1309,8 +1309,9 @@ services:
     tags:
       - { name: twig.extension, priority: 100 }
     calls:
-      - [setGenerators, ['@url_generator']]
+      - [setUrlGenerator, ['@url_generator']]
       - [setLinkGenerator, ['@link_generator']]
+      - [setThemeManager, ['@theme.manager']]
   # @todo Figure out what to do about debugging functions.
   # @see http://drupal.org/node/1804998
   twig.extension.debug:
diff --git a/core/lib/Drupal/Core/Template/TwigExtension.php b/core/lib/Drupal/Core/Template/TwigExtension.php
index 44b0a2a..aefab4f 100644
--- a/core/lib/Drupal/Core/Template/TwigExtension.php
+++ b/core/lib/Drupal/Core/Template/TwigExtension.php
@@ -16,6 +16,7 @@
 use Drupal\Core\Routing\UrlGeneratorInterface;
 use Drupal\Core\Url;
 use Drupal\Core\Utility\LinkGeneratorInterface;
+use Drupal\Core\Theme\ThemeManagerInterface;
 
 /**
  * A class providing Drupal Twig extensions.
@@ -48,6 +49,13 @@ class TwigExtension extends \Twig_Extension {
   protected $renderer;
 
   /**
+   * The theme manager.
+   *
+   * @var \Drupal\Core\Theme\ThemeManagerInterface
+   */
+  protected $themeManager;
+
+  /**
    * Constructs \Drupal\Core\Template\TwigExtension.
    *
    * @param \Drupal\Core\Render\RendererInterface $renderer
@@ -65,7 +73,7 @@ public function __construct(RendererInterface $renderer) {
    *
    * @return $this
    */
-  public function setGenerators(UrlGeneratorInterface $url_generator) {
+  public function setUrlGenerator(UrlGeneratorInterface $url_generator) {
     $this->urlGenerator = $url_generator;
     return $this;
   }
@@ -84,6 +92,19 @@ public function setLinkGenerator(LinkGeneratorInterface $link_generator) {
   }
 
   /**
+   * Sets the theme manager.
+   *
+   * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager
+   *   The theme manager.
+   *
+   * @return $this
+   */
+  public function setThemeManager(ThemeManagerInterface $theme_manager) {
+    $this->themeManager = $theme_manager;
+    return $this;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function getFunctions() {
@@ -97,7 +118,8 @@ public function getFunctions() {
       new \Twig_SimpleFunction('url_from_path', array($this, 'getUrlFromPath'), array('is_safe_callback' => array($this, 'isUrlGenerationSafe'))),
       new \Twig_SimpleFunction('link', array($this, 'getLink')),
       new \Twig_SimpleFunction('file_url', 'file_create_url'),
-      new \Twig_SimpleFunction('attach_library', array($this, 'attachLibrary'))
+      new \Twig_SimpleFunction('attach_library', array($this, 'attachLibrary')),
+      new \Twig_SimpleFunction('active_theme', array($this, 'activeTheme'))
     );
   }
 
@@ -242,6 +264,16 @@ public function getLink($text, $url) {
   }
 
   /**
+   * Gets the name of the active theme.
+   *
+   * @return string
+   *   The name of the active theme.
+   */
+  public function activeTheme() {
+    return $this->themeManager->getActiveTheme()->getName();
+  }
+
+  /**
    * Determines at compile time whether the generated URL will be safe.
    *
    * Saves the unneeded automatic escaping for performance reasons.
diff --git a/core/modules/system/src/Tests/Theme/EngineTwigTest.php b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
index ff84af7..449bf03 100644
--- a/core/modules/system/src/Tests/Theme/EngineTwigTest.php
+++ b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
@@ -112,6 +112,15 @@ public function testTwigFileUrls() {
   }
 
   /**
+   * Tests the active_theme() function.
+   */
+  public function testActiveTheme() {
+    $this->drupalGet('/twig-theme-test/active_theme');
+    $theme = \Drupal::service('theme.manager')->getActiveTheme()->getName();
+    $this->assertRaw('<div>active theme: ' . $theme . '</div>');
+  }
+
+  /**
    * Tests the attach of asset libraries.
    */
   public function testTwigAttachLibrary() {
diff --git a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
index 50d6c99..9b39133 100644
--- a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
+++ b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
@@ -84,4 +84,11 @@ public function registryLoaderRender() {
     return array('#theme' => 'twig_registry_loader_test');
   }
 
+  /**
+   * Menu callback for testing the active theme function.
+   */
+  public function activeThemeRender() {
+    return array('#theme' => 'twig_theme_test_active_theme');
+  }
+
 }
diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.active_theme.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.active_theme.html.twig
new file mode 100644
index 0000000..5867b6e
--- /dev/null
+++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.active_theme.html.twig
@@ -0,0 +1 @@
+<div>active theme: {{ active_theme() }}</div>
\ No newline at end of file
diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
index 021d039..d3c5336 100644
--- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
+++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
@@ -54,6 +54,10 @@ function twig_theme_test_theme($existing, $type, $theme, $path) {
     'variables' => array(),
     'template' => 'twig_theme_test.attach_library',
   );
+  $items['twig_theme_test_active_theme'] = array(
+    'variables' => array(),
+    'template' => 'twig_theme_test.active_theme',
+  );
   return $items;
 }
 
@@ -93,5 +97,6 @@ function _test_theme_twig_php_values() {
       'value' => 'Hello world!',
       'expected' => 'Hello world!',
     ),
+
   );
 }
diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
index 4cdfeca..0572dd8 100644
--- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
+++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
@@ -55,3 +55,10 @@ twig_theme_test_registry_loader:
     no_cache: TRUE
   requirements:
     _access: 'TRUE'
+
+twig_theme_test_active_theme:
+  path: '/twig-theme-test/active_theme'
+  defaults:
+    _controller: '\Drupal\twig_theme_test\TwigThemeTestController::activeThemeRender'
+  requirements:
+    _access: 'TRUE'
\ No newline at end of file
diff --git a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
index 3866965..2b16e56 100644
--- a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
@@ -32,7 +32,7 @@ public function testEscaping($template, $expected) {
       'autoescape' => TRUE,
       'optimizations' => 0
     ));
-    $twig->addExtension((new TwigExtension($renderer))->setGenerators($this->getMock('Drupal\Core\Routing\UrlGeneratorInterface')));
+    $twig->addExtension((new TwigExtension($renderer))->setUrlGenerator($this->getMock('Drupal\Core\Routing\UrlGeneratorInterface')));
 
     $nodes = $twig->parse($twig->tokenize($template));
 
