diff --git a/core/modules/system/lib/Drupal/system/Plugin/Core/Condition/RequestPath.php b/core/modules/system/lib/Drupal/system/Plugin/Core/Condition/RequestPath.php
new file mode 100644
index 0000000..692ed89
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Plugin/Core/Condition/RequestPath.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Plugin\Core\Condition\RequestPath.
+ */
+
+namespace Drupal\system\Plugin\Core\Condition;
+
+use Drupal\Core\Condition\ConditionPluginBase;
+use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
+
+/**
+ * Provides a 'Request Path' condition.
+ *
+ * @Plugin(
+ *   id = "request_path",
+ *   label = @Translation("Request Path"),
+ *   module = "system",
+ *   context = {
+ *     "request" = {
+ *       "class" = "Symfony\Component\HttpFoundation\Request"
+ *     },
+ *     "alias_manager" = {
+ *       "class" = "Drupal\Core\Path\AliasManager"
+ *     }
+ *   }
+ * )
+ */
+class RequestPath extends ConditionPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function form($form, &$form_state) {
+    $form['pages'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Pages'),
+      '#default_value' => !empty($this->configuration['pages']) ? $this->configuration['pages'] : '',
+      '#description' => t("Specify pages by using their paths. Enter one path per line. The '*' character is a wildcard. Example paths are %user for the current user's page and %user-wildcard for every user page. %front is the front page.", array('%user' => 'user', '%user-wildcard' => 'user/*', '%front' => '<front>')),
+    );
+    return parent::form($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submit($form, &$form_state) {
+    $this->configuration['pages'] = $form_state['values']['pages'];
+    parent::submit($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function summary() {
+    $pages = array();
+    foreach (explode("\n", $this->configuration['pages']) as $page) {
+      $pages[] = trim($page);
+    }
+    $pages = implode(', ', $pages);
+    if (!empty($this->configuration['negate'])) {
+      return t('Do not return true on the following pages: @pages', array('@pages' => $pages));
+    }
+    return t('Return true on the following pages: @pages', array('@pages' => $pages));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function evaluate() {
+    // Convert path to lowercase. This allows comparison of the same path
+    // with different case. Ex: /Page, /page, /PAGE.
+    $pages = drupal_strtolower($this->configuration['pages']);
+    // Compare the lowercase path alias (if any) and internal path.
+    $request = $this->getContextValue('request');
+    $alias_manager = $this->getContextValue('alias_manager');
+    $path = $request->attributes->get('system_path');
+    $path_alias = drupal_strtolower($alias_manager->getPathAlias($path));
+    return drupal_match_path($path_alias, $pages) || (($path != $path_alias) && drupal_match_path($path, $pages));
+  }
+
+}
diff --git a/core/modules/system/lib/Drupal/system/Tests/Condition/RequestPathConditionTest.php b/core/modules/system/lib/Drupal/system/Tests/Condition/RequestPathConditionTest.php
new file mode 100644
index 0000000..674889b
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Condition/RequestPathConditionTest.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Condition\RequestPathConditionTest.
+ */
+
+namespace Drupal\system\Tests\Condition;
+
+use Drupal\simpletest\DrupalUnitTestBase;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Tests the request path condition.
+ */
+class RequestPathConditionTest extends DrupalUnitTestBase {
+
+  /**
+   * The condition plugin manager.
+   *
+   * @var \Drupal\Core\Condition\ConditionManager
+   */
+  protected $manager;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('system');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Request Path Condition Plugin',
+      'description' => 'Tests that the Request Path Condition, provided by the system module, is working properly.',
+      'group' => 'Condition API',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->manager = $this->container->get('plugin.manager.condition');
+  }
+
+  /**
+   * Test the RequestPath condition.
+   */
+  public function testConditions() {
+    // Fabricate a new request.
+    $new_request = Request::create('http://test.com/my/pass/page');
+    // The condition checks the system_path attribute of the request so we must
+    // set that to the path we want to evaluate.
+    $new_request->attributes->set('system_path', 'my/pass/page');
+
+    $pages = "my/pass/page\r\nmy/pass/page2";
+    $condition = $this->manager->createInstance('request_path')
+      ->setConfig('pages', $pages)
+      ->setContextValue('request', $new_request)
+      ->setContextValue('alias_manager', $this->container->get('path.alias_manager'));
+
+    // Check the first configured path and summary.
+    $this->assertTrue($condition->execute(), 'The system_path my/pass/page passes.');
+    $this->assertIdentical($condition->summary(), 'Return true on the following pages: my/pass/page, my/pass/page2');
+
+    // Check the second configured path.
+    $new_request->attributes->set('system_path', 'my/pass/page2');
+    $this->assertTrue($condition->execute(), 'The system_path my/pass/page2 passes.');
+
+    // Set the pages to a new path.
+    $condition->setConfig('pages', 'my/fail/page');
+    $this->assertFalse($condition->execute(), 'The system_path my/fail/page fails.');
+    $this->assertIdentical($condition->summary(), 'Return true on the following pages: my/fail/page');
+
+    // Negate the condition; check that execution and summary are still proper.
+    $condition->setConfig('negate', TRUE);
+    $this->assertTrue($condition->execute(), 'The system_path my/fail/page is properly negated.');
+    $this->assertIdentical($condition->summary(), 'Do not return true on the following pages: my/fail/page');
+  }
+
+}
