diff --git a/core/includes/common.inc b/core/includes/common.inc
index f30bcdf..26516f0 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -2902,7 +2902,7 @@ function drupal_pre_render_html_tag($element) {
  *   - One of the following
  *     - #route_name and (optionally) and a #route_parameters array; The route
  *       name and route parameters which will be passed into the link generator.
- *     - #href: The system path or URL to pass as argument to l().
+ *     - #path: The system path or URL to pass as argument to l().
  *   - #options: (optional) An array of options to pass to l() or the link
  *     generator.
  *
@@ -2939,7 +2939,7 @@ function drupal_pre_render_link($element) {
     }
     // If #ajax['path] was not specified, use the href as Ajax request URL.
     if (!isset($element['#ajax']['path'])) {
-      $element['#ajax']['path'] = $element['#href'];
+      $element['#ajax']['path'] = $element['#path'];
       $element['#ajax']['options'] = $element['#options'];
     }
     $element = ajax_pre_render_element($element);
@@ -2950,7 +2950,7 @@ function drupal_pre_render_link($element) {
     $element['#markup'] = \Drupal::linkGenerator()->generate($element['#title'], $element['#route_name'], $element['#route_parameters'], $element['#options']);
   }
   else {
-    $element['#markup'] = l($element['#title'], $element['#href'], $element['#options']);
+    $element['#markup'] = l($element['#title'], $element['#path'], $element['#options']);
   }
   return $element;
 }
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 0fefe74..b0f81f6 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -279,7 +279,7 @@ function theme_menu_link(array $variables) {
     $sub_menu = drupal_render($element['#below']);
   }
   $element['#localized_options']['set_active_class'] = TRUE;
-  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
+  $output = l($element['#title'], $element['#path'], $element['#localized_options']);
   return '<li' . new Attribute($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
 }
 
diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index 780ff6f..e89e17b 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -230,7 +230,7 @@ function template_preprocess_pager(&$variables) {
     $li_first = array(
       '#type' => 'link',
       '#title' => $tags[0],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, 0),
         'attributes' => array(
@@ -248,7 +248,7 @@ function template_preprocess_pager(&$variables) {
     $li_previous = array(
       '#type' => 'link',
       '#title' => $tags[1],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, $pager_page_array[$element] - 1),
         'attributes' => array(
@@ -270,7 +270,7 @@ function template_preprocess_pager(&$variables) {
     $li_next = array(
       '#type' => 'link',
       '#title' => $tags[3],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, $pager_page_array[$element] + 1),
         'attributes' => array(
@@ -288,7 +288,7 @@ function template_preprocess_pager(&$variables) {
     $li_last = array(
       '#type' => 'link',
       '#title' => $tags[4],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, $pager_total[$element] - 1),
         'attributes' => array(
@@ -336,7 +336,7 @@ function template_preprocess_pager(&$variables) {
             'link' => array(
               '#type' => 'link',
               '#title' => $i,
-              '#href' => $current_path,
+              '#path' => $current_path,
               '#options' => array(
                 'query' => pager_query_add_page($parameters, $element, $i - 1),
                 'attributes' => array(
@@ -365,7 +365,7 @@ function template_preprocess_pager(&$variables) {
             'link' => array(
               '#type' => 'link',
               '#title' => $i,
-              '#href' => $current_path,
+              '#path' => $current_path,
               '#options' => array(
                 'query' => pager_query_add_page($parameters, $element, $i - 1),
                 'attributes' => array(
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index e44f13d..0cf6b2b 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1198,7 +1198,7 @@ function template_preprocess_links(&$variables) {
         '#type' => 'link',
         '#title' => $link['title'],
         '#options' => array_diff_key($link, array_combine($keys, $keys)),
-        '#href' => $link['href'],
+        '#path' => $link['href'],
         '#route_name' => $link['route_name'],
         '#route_parameters' => $link['route_parameters'],
         '#ajax' => $link['ajax'],
@@ -1338,7 +1338,7 @@ function template_preprocess_image(&$variables) {
  *   $form['table'][$row]['edit'] = array(
  *     '#type' => 'link',
  *     '#title' => t('Edit'),
- *     '#href' => 'thing/' . $row . '/edit',
+ *     '#path' => 'thing/' . $row . '/edit',
  *   );
  * }
  * @endcode
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/MailToFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/MailToFormatter.php
index 58f6c6b..d14db32 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/MailToFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/MailToFormatter.php
@@ -33,7 +33,7 @@ public function viewElements(FieldItemListInterface $items) {
       $elements[$delta] = array(
         '#type' => 'link',
         '#title' => $item->value,
-        '#href' => 'mailto:' . $item->value,
+        '#path' => 'mailto:' . $item->value,
       );
     }
 
diff --git a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
index 1b1fa30..c1ef203 100644
--- a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
+++ b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
@@ -39,7 +39,7 @@ public static function buildCancelLink(ConfirmFormInterface $form, Request $requ
     if ($query->has('destination')) {
       $options = UrlHelper::parse($query->get('destination'));
       $link = array(
-        '#href' => $options['path'],
+        '#path' => $options['path'],
         '#options' => $options,
       );
     }
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 88b6ecc..803fec9 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -134,7 +134,7 @@ function block_page_build(&$page) {
     $page['page_top']['backlink'] = array(
       '#type' => 'link',
       '#title' => t('Exit block region demonstration'),
-      '#href' => 'admin/structure/block' . (\Drupal::config('system.theme')->get('default') == $theme ? '' : '/list/' . $theme),
+      '#path' => 'admin/structure/block' . (\Drupal::config('system.theme')->get('default') == $theme ? '' : '/list/' . $theme),
       '#options' => array('attributes' => array('class' => array('block-demo-backlink'))),
       '#weight' => -10,
     );
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index 9cc4835..ea4309e 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -542,7 +542,7 @@ function theme_book_link(array $variables) {
     $sub_menu = drupal_render($element['#below']);
   }
   $element['#localized_options']['set_active_class'] = TRUE;
-  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
+  $output = l($element['#title'], $element['#path'], $element['#localized_options']);
   return '<li' . new Attribute($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
 }
 
diff --git a/core/modules/book/lib/Drupal/book/BookManager.php b/core/modules/book/lib/Drupal/book/BookManager.php
index c491cf4..0aeb42e 100644
--- a/core/modules/book/lib/Drupal/book/BookManager.php
+++ b/core/modules/book/lib/Drupal/book/BookManager.php
@@ -550,7 +550,7 @@ public function bookTreeOutput(array $tree) {
       $element['#attributes']['class'] = $class;
       $element['#title'] = $data['link']['title'];
       $node = $this->entityManager->getStorage('node')->load($data['link']['nid']);
-      $element['#href'] = $node->url();
+      $element['#path'] = $node->url();
       $element['#localized_options'] = !empty($data['link']['localized_options']) ? $data['link']['localized_options'] : array();
       $element['#below'] = $data['below'] ? $this->bookTreeOutput($data['below']) : $data['below'];
       $element['#original_link'] = $data['link'];
diff --git a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
index 88cdeab..d84888b 100644
--- a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
+++ b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
@@ -131,7 +131,7 @@ public function diff($source_name, $target_name = NULL) {
         ),
       ),
       '#title' => "Back to 'Synchronize configuration' page.",
-      '#href' => 'admin/config/development/configuration',
+      '#path' => 'admin/config/development/configuration',
     );
 
     return $build;
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayModeListBuilder.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayModeListBuilder.php
index 05c241a..71d0998 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayModeListBuilder.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayModeListBuilder.php
@@ -118,7 +118,7 @@ public function render() {
       $table['#rows']['_add_new'][] = array(
         'data' => array(
           '#type' => 'link',
-          '#href' => "admin/structure/display-modes/$short_type/add/$entity_type",
+          '#path' => "admin/structure/display-modes/$short_type/add/$entity_type",
           '#title' => t('Add new %label @entity-type', array('%label' => $this->entityTypes[$entity_type]->getLabel(), '@entity-type' => $this->entityType->getLowercaseLabel())),
           '#options' => array(
             'html' => TRUE,
diff --git a/core/modules/forum/lib/Drupal/forum/Form/Overview.php b/core/modules/forum/lib/Drupal/forum/Form/Overview.php
index ce666bf..2518234 100644
--- a/core/modules/forum/lib/Drupal/forum/Form/Overview.php
+++ b/core/modules/forum/lib/Drupal/forum/Form/Overview.php
@@ -74,7 +74,7 @@ public function buildForm(array $form, array &$form_state) {
     foreach (Element::children($form['terms']) as $key) {
       if (isset($form['terms'][$key]['#term'])) {
         $term = $form['terms'][$key]['#term'];
-        $form['terms'][$key]['term']['#href'] = 'forum/' . $term->id();
+        $form['terms'][$key]['term']['#path'] = 'forum/' . $term->id();
         unset($form['terms'][$key]['operations']['#links']['delete']);
         if (!empty($term->forum_container->value)) {
           $form['terms'][$key]['operations']['#links']['edit']['title'] = $this->t('edit container');
diff --git a/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php b/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
index 1e7d782..657d3e0 100644
--- a/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
+++ b/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
@@ -106,13 +106,13 @@ public function form(array $form, array &$form_state) {
       $form['effects'][$key]['configure'] = array(
         '#type' => 'link',
         '#title' => $this->t('Edit'),
-        '#href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key,
+        '#path' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key,
         '#access' => $is_configurable,
       );
       $form['effects'][$key]['remove'] = array(
         '#type' => 'link',
         '#title' => $this->t('Delete'),
-        '#href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete',
+        '#path' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete',
       );
     }
 
diff --git a/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserDeleteForm.php b/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserDeleteForm.php
index 1d4260b..b306664 100644
--- a/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserDeleteForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserDeleteForm.php
@@ -51,7 +51,7 @@ public function buildForm(array $form, array &$form_state, $browser_langcode = N
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after http://drupal.org/node/2082071.
-    $form['actions']['cancel']['#href'] = 'admin/config/regional/language/detection/browser';
+    $form['actions']['cancel']['#path'] = 'admin/config/regional/language/detection/browser';
     return $form;
   }
 
diff --git a/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php b/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
index dd6aff8..a6a1aee 100644
--- a/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
+++ b/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
@@ -62,7 +62,7 @@ public function typeLinkActiveClass() {
       'no_language' => array(
         '#type' => 'link',
         '#title' => t('Link to the current path with no langcode provided.'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'attributes' => array(
             'id' => 'no_lang_link',
@@ -73,7 +73,7 @@ public function typeLinkActiveClass() {
       'fr' => array(
         '#type' => 'link',
         '#title' => t('Link to a French version of the current path.'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'language' => $languages['fr'],
           'attributes' => array(
@@ -85,7 +85,7 @@ public function typeLinkActiveClass() {
       'en' => array(
         '#type' => 'link',
         '#title' => t('Link to an English version of the current path.'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'language' => $languages['en'],
           'attributes' => array(
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
index d446643..148bb95 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
@@ -655,7 +655,7 @@ public function build() {
     $build = array(
       '#type' => 'link',
       '#title' => $this->title,
-      '#href' => $this->href,
+      '#path' => $this->href,
       '#route_name' => $this->route_name ? $this->route_name : NULL,
       '#route_parameters' => $this->route_parameters,
       '#options' => !empty($this->localized_options) ? $this->localized_options : array(),
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuTree.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuTree.php
index adbf85d..cfa3a80 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/MenuTree.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuTree.php
@@ -400,7 +400,7 @@ public function renderTree($tree) {
       $element['#title'] = $data['link']['title'];
       // @todo Use route name and parameters to generate the link path, unless
       //    it is external.
-      $element['#href'] = $data['link']['link_path'];
+      $element['#path'] = $data['link']['link_path'];
       $element['#localized_options'] = !empty($data['link']['localized_options']) ? $data['link']['localized_options'] : array();
       $element['#below'] = $data['below'] ? $this->renderTree($data['below']) : $data['below'];
       $element['#original_link'] = $data['link'];
diff --git a/core/modules/menu_link/tests/Drupal/menu_link/Tests/MenuTreeTest.php b/core/modules/menu_link/tests/Drupal/menu_link/Tests/MenuTreeTest.php
index bd77a45..5fc8dc6 100644
--- a/core/modules/menu_link/tests/Drupal/menu_link/Tests/MenuTreeTest.php
+++ b/core/modules/menu_link/tests/Drupal/menu_link/Tests/MenuTreeTest.php
@@ -452,7 +452,7 @@ public function testOutputWithComplexData() {
     $output = $this->menuTree->renderTree($tree);
 
     // Looking for child items in the data
-    $this->assertEquals( $output['1']['#below']['2']['#href'], 'a/b', 'Checking the href on a child item');
+    $this->assertEquals( $output['1']['#below']['2']['#path'], 'a/b', 'Checking the href on a child item');
     $this->assertTrue(in_array('active-trail', $output['1']['#below']['2']['#attributes']['class']), 'Checking the active trail class');
     // Validate that the hidden and no access items are missing
     $this->assertFalse(isset($output['5']), 'Hidden item should be missing');
diff --git a/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php b/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
index fada9bb..f665594 100644
--- a/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
+++ b/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
@@ -109,7 +109,7 @@ public function buildForm(array $form, array &$form_state) {
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after http://drupal.org/node/2021161.
-    $form['actions']['cancel']['#href'] = 'admin/content';
+    $form['actions']['cancel']['#path'] = 'admin/content';
     return $form;
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php b/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
index 8890709..7f01d74 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
@@ -109,7 +109,7 @@ public function buildForm(array $form, array &$form_state, $node_revision = NULL
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after http://drupal.org/node/1863906.
-    $form['actions']['cancel']['#href'] = 'node/' . $this->revision->id() . '/revisions';
+    $form['actions']['cancel']['#path'] = 'node/' . $this->revision->id() . '/revisions';
     return $form;
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php b/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
index b0d717d..940ddf2 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
@@ -92,7 +92,7 @@ public function buildForm(array $form, array &$form_state, $node_revision = NULL
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after http://drupal.org/node/1863906.
-    $form['actions']['cancel']['#href'] = 'node/' . $this->revision->id() . '/revisions';
+    $form['actions']['cancel']['#path'] = 'node/' . $this->revision->id() . '/revisions';
     return $form;
   }
 
diff --git a/core/modules/path/lib/Drupal/path/Form/DeleteForm.php b/core/modules/path/lib/Drupal/path/Form/DeleteForm.php
index e7b3307..8b50736 100644
--- a/core/modules/path/lib/Drupal/path/Form/DeleteForm.php
+++ b/core/modules/path/lib/Drupal/path/Form/DeleteForm.php
@@ -78,7 +78,7 @@ public function buildForm(array $form, array &$form_state, $pid = NULL) {
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after http://drupal.org/node/1987802.
-    $form['actions']['cancel']['#href'] = 'admin/config/search/path';
+    $form['actions']['cancel']['#path'] = 'admin/config/search/path';
     return $form;
   }
 
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index 3ad21f0..32410ba 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -431,7 +431,7 @@ function shortcut_toolbar() {
       'tab' => array(
         '#type' => 'link',
         '#title' => t('Shortcuts'),
-        '#href' => 'admin/config/user-interface/shortcut',
+        '#path' => 'admin/config/user-interface/shortcut',
         '#attributes' => array(
           'title' => t('Shortcuts'),
           'class' => array('toolbar-icon', 'toolbar-icon-shortcut'),
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
index 299f305..be49150 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
@@ -226,7 +226,7 @@ public function buildForm(array $form, array &$form_state, $test_id = NULL) {
     $form['action']['return'] = array(
       '#type' => 'link',
       '#title' => $this->t('Return to list'),
-      '#href' => 'admin/config/development/testing',
+      '#path' => 'admin/config/development/testing',
     );
 
     if (is_numeric($test_id)) {
diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
index d061495..94d56bf 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
@@ -214,7 +214,7 @@ protected function buildRow(array $modules, Extension $module, $distribution) {
         $row['links']['help'] = array(
           '#type' => 'link',
           '#title' => $this->t('Help'),
-          '#href' => 'admin/help/' . $module->getName(),
+          '#path' => 'admin/help/' . $module->getName(),
           '#options' => array('attributes' => array('class' =>  array('module-link', 'module-link-help'), 'title' => $this->t('Help'))),
         );
       }
@@ -226,7 +226,7 @@ protected function buildRow(array $modules, Extension $module, $distribution) {
       $row['links']['permissions'] = array(
         '#type' => 'link',
         '#title' => $this->t('Permissions'),
-        '#href' => 'admin/people/permissions',
+        '#path' => 'admin/people/permissions',
         '#options' => array('fragment' => 'module-' . $module->getName(), 'attributes' => array('class' => array('module-link', 'module-link-permissions'), 'title' => $this->t('Configure permissions'))),
       );
     }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
index caa80a2..52478bd 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
@@ -108,7 +108,7 @@ function testDrupalRenderBasics() {
             ),
           ),
           '#attributes' => array('id' => 'foo'),
-          '#href' => 'http://drupal.org',
+          '#path' => 'http://drupal.org',
           '#title' => 'bar',
         ),
         'expected' => '<div class="baz"><a href="http://drupal.org" id="foo">bar</a></div>' . "\n",
@@ -119,7 +119,7 @@ function testDrupalRenderBasics() {
         'name' => '#theme_wrappers attribute disambiguation with undefined #theme attribute',
         'value' => array(
           '#type' => 'link',
-          '#href' => 'http://drupal.org',
+          '#path' => 'http://drupal.org',
           '#title' => 'foo',
           '#theme_wrappers' => array(
             'container' => array(
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/RenderWebTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/RenderWebTest.php
index 8168b96..aafae4d 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/RenderWebTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/RenderWebTest.php
@@ -110,13 +110,13 @@ function testDrupalRenderFormElements() {
     $element = array(
       '#type' => 'link',
       '#title' => $this->randomName(),
-      '#href' => $this->randomName(),
+      '#path' => $this->randomName(),
       '#options' => array(
         'absolute' => TRUE,
       ),
     );
     $this->assertRenderedElement($element, '//a[@href=:href and contains(., :title)]', array(
-      ':href' => url($element['#href'], array('absolute' => TRUE)),
+      ':href' => url($element['#path'], array('absolute' => TRUE)),
       ':title' => $element['#title'],
     ));
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php
index 7cda6a3..77a8d8c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php
@@ -45,7 +45,7 @@ function testLinkXSS() {
     $link_array =  array(
       '#type' => 'link',
       '#title' => $this->randomName(),
-      '#href' => $path,
+      '#path' => $path,
     );
     $type_link = drupal_render($link_array);
     $sanitized_path = check_url(url($path));
@@ -63,7 +63,7 @@ function testLinkAttributes() {
       '#options' => array(
         'language' => $language,
       ),
-      '#href' => 'http://drupal.org',
+      '#path' => 'http://drupal.org',
       '#title' => 'bar',
     );
     $langcode = $language->id;
@@ -125,7 +125,7 @@ function testLinkAttributes() {
     $type_link = array(
       '#type' => 'link',
       '#title' => $this->randomName(),
-      '#href' => current_path(),
+      '#path' => current_path(),
       '#options' => array(
         'attributes' => array(
           'class' => array($class_theme),
@@ -152,7 +152,7 @@ function testLinkRenderArrayText() {
     $type_link_plain_array = array(
       '#type' => 'link',
       '#title' => 'foo',
-      '#href' => 'http://drupal.org',
+      '#path' => 'http://drupal.org',
     );
     $type_link_plain = drupal_render($type_link_plain_array);
     $this->assertEqual($type_link_plain, $l);
@@ -161,7 +161,7 @@ function testLinkRenderArrayText() {
     $type_link_nested_array = array(
       '#type' => 'link',
       '#title' => array('#markup' => 'foo'),
-      '#href' => 'http://drupal.org',
+      '#path' => 'http://drupal.org',
     );
     $type_link_nested = drupal_render($type_link_nested_array);
     $this->assertEqual($type_link_nested, $l);
diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.module b/core/modules/system/tests/modules/ajax_test/ajax_test.module
index eee24f3..e189588 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.module
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.module
@@ -102,7 +102,7 @@ function ajax_test_dialog_contents() {
     'cancel' => array(
       '#type' => 'link',
       '#title' => 'Cancel',
-      '#href' => '',
+      '#path' => '',
       '#attributes' => array(
         // This is a special class to which JavaScript assigns dialog closing
         // behavior.
diff --git a/core/modules/system/tests/modules/ajax_test/lib/Drupal/ajax_test/Controller/AjaxTestController.php b/core/modules/system/tests/modules/ajax_test/lib/Drupal/ajax_test/Controller/AjaxTestController.php
index ac0399f..ccbf9f7 100644
--- a/core/modules/system/tests/modules/ajax_test/lib/Drupal/ajax_test/Controller/AjaxTestController.php
+++ b/core/modules/system/tests/modules/ajax_test/lib/Drupal/ajax_test/Controller/AjaxTestController.php
@@ -56,7 +56,7 @@ public function dialog() {
     $build['link'] = array(
       '#type' => 'link',
       '#title' => 'Link 1 (modal)',
-      '#href' => 'ajax-test/dialog-contents',
+      '#path' => 'ajax-test/dialog-contents',
       '#attributes' => array(
         'class' => array('use-ajax'),
         'data-accepts' => 'application/vnd.drupal-modal',
diff --git a/core/modules/system/tests/modules/common_test/lib/Drupal/common_test/Controller/CommonTestController.php b/core/modules/system/tests/modules/common_test/lib/Drupal/common_test/Controller/CommonTestController.php
index 32bc04f..a6b332e 100644
--- a/core/modules/system/tests/modules/common_test/lib/Drupal/common_test/Controller/CommonTestController.php
+++ b/core/modules/system/tests/modules/common_test/lib/Drupal/common_test/Controller/CommonTestController.php
@@ -25,7 +25,7 @@ public function typeLinkActiveClass() {
       'no_query' => array(
         '#type' => 'link',
         '#title' => t('Link with no query string'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'set_active_class' => TRUE,
         ),
@@ -33,7 +33,7 @@ public function typeLinkActiveClass() {
       'with_query' => array(
         '#type' => 'link',
         '#title' => t('Link with a query string'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'query' => array(
             'foo' => 'bar',
@@ -45,7 +45,7 @@ public function typeLinkActiveClass() {
       'with_query_reversed' => array(
         '#type' => 'link',
         '#title' => t('Link with the same query string in reverse order'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'query' => array(
             'one' => 'two',
diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
index 7dd4dee..b798b5c 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
+++ b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
@@ -77,7 +77,7 @@ public function viewElements(FieldItemListInterface $items) {
         // itself as title.
         '#title' => $title_setting ?: $item->value,
         // Prepend 'tel:' to the telephone number.
-        '#href' => 'tel:' . rawurlencode(preg_replace('/\s+/', '', $item->value)),
+        '#path' => 'tel:' . rawurlencode(preg_replace('/\s+/', '', $item->value)),
         '#options' => array('external' => TRUE),
       );
 
diff --git a/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module b/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module
index bc2ce99..2c34c13 100644
--- a/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module
+++ b/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module
@@ -15,7 +15,7 @@ function toolbar_test_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Test tab'),
-      '#href' => '',
+      '#path' => '',
       '#options' => array(
         'html' => FALSE,
         'attributes' => array(
diff --git a/core/modules/toolbar/toolbar.api.php b/core/modules/toolbar/toolbar.api.php
index ab9b75a..b9d7731 100644
--- a/core/modules/toolbar/toolbar.api.php
+++ b/core/modules/toolbar/toolbar.api.php
@@ -72,7 +72,7 @@ function hook_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Home'),
-      '#href' => '<front>',
+      '#path' => '<front>',
       '#options' => array(
         'attributes' => array(
           'title' => t('Home page'),
@@ -96,7 +96,7 @@ function hook_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Shopping cart'),
-      '#href' => '/cart',
+      '#path' => '/cart',
       '#options' => array(
         'html' => FALSE,
         'attributes' => array(
@@ -131,7 +131,7 @@ function hook_toolbar() {
       '#theme' => 'user_message_toolbar_tab',
       '#theme_wrappers' => array(),
       '#title' => t('Messages'),
-      '#href' => '/user/messages',
+      '#path' => '/user/messages',
       '#options' => array(
         'attributes' => array(
           'title' => t('Messages'),
diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module
index 3599c59..5e46179 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -99,7 +99,7 @@ function toolbar_element_info() {
     'tab' => array(
       '#type' => 'link',
       '#title' => NULL,
-      '#href' => '',
+      '#path' => '',
     ),
   );
   return $elements;
@@ -331,7 +331,7 @@ function toolbar_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Back to site'),
-      '#href' => '<front>',
+      '#path' => '<front>',
       '#attributes' => array(
         'title' => t('Return to site content'),
         'class' => array('toolbar-icon', 'toolbar-icon-escape-admin'),
@@ -390,7 +390,7 @@ function toolbar_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Manage'),
-      '#href' => 'admin',
+      '#path' => 'admin',
       '#attributes' => array(
         'title' => t('Admin menu'),
         'class' => array('toolbar-icon', 'toolbar-icon-menu'),
diff --git a/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php b/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
index b0dd621..863b6c6 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
@@ -161,7 +161,7 @@ public function buildForm(array $form, array &$form_state) {
     $form = parent::buildForm($form, $form_state);
 
     // @todo Convert to getCancelRoute() after https://drupal.org/node/1938884.
-    $form['actions']['cancel']['#href'] = 'admin/people';
+    $form['actions']['cancel']['#path'] = 'admin/people';
     return $form;
   }
 
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 3fe1f1c..9008535 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -1637,7 +1637,7 @@ function user_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => $user->getUsername(),
-      '#href' => 'user',
+      '#path' => 'user',
       '#attributes' => array(
         'title' => t('My account'),
         'class' => array('toolbar-icon', 'toolbar-icon-user'),
diff --git a/core/modules/views/views.theme.inc b/core/modules/views/views.theme.inc
index ae967bd..c3500f6 100644
--- a/core/modules/views/views.theme.inc
+++ b/core/modules/views/views.theme.inc
@@ -1058,7 +1058,7 @@ function template_preprocess_views_mini_pager(&$variables) {
     $li_previous = array(
       '#type' => 'link',
       '#title' => $tags[1],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, $pager_page_array[$element] - 1),
         'attributes' => array(
@@ -1081,7 +1081,7 @@ function template_preprocess_views_mini_pager(&$variables) {
     $li_next = array(
       '#type' => 'link',
       '#title' => $tags[3],
-      '#href' => $current_path,
+      '#path' => $current_path,
       '#options' => array(
         'query' => pager_query_add_page($parameters, $element, $pager_page_array[$element] + 1),
         'attributes' => array(
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/ReorderDisplays.php b/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/ReorderDisplays.php
index 61e5693..3fefb5f 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/ReorderDisplays.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/ReorderDisplays.php
@@ -115,7 +115,7 @@ public function buildForm(array $form, array &$form_state) {
         'link' => array(
           '#type' => 'link',
           '#title' => '<span>' . $this->t('Remove') . '</span>',
-          '#href' => 'javascript:void()',
+          '#path' => 'javascript:void()',
           '#options' => array(
             'html' => TRUE,
           ),
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditForm.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditForm.php
index 39e82d1..ec744de 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditForm.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditForm.php
@@ -414,7 +414,7 @@ public function getDisplayDetails($view, $display) {
               '#type' => 'link',
               '#title' => $this->t('View !display_title', array('!display_title' => $display_title)),
               '#options' => array('alt' => array($this->t("Go to the real page for this display"))),
-              '#href' => $path,
+              '#path' => $path,
               '#prefix' => '<li class="view">',
               "#suffix" => '</li>',
             );
diff --git a/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php b/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
index 5381bfb..f6c6bc2 100644
--- a/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
@@ -101,7 +101,7 @@ public function testCancelLinkDestination() {
     $query = array('destination' => 'baz');
     $form = $this->getMock('Drupal\Core\Form\ConfirmFormInterface');
     $link = ConfirmFormHelper::buildCancelLink($form, new Request($query));
-    $this->assertSame($query['destination'], $link['#href']);
+    $this->assertSame($query['destination'], $link['#path']);
   }
 
 }
