diff --git a/core/includes/common.inc b/core/includes/common.inc
index a392a5a..698379d 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -4354,7 +4354,7 @@ function drupal_pre_render_html_tag($element) {
  * @param $elements
  *   A structured array whose keys form the arguments to l():
  *   - #title: The link text to pass as argument to l().
- *   - #href: The URL path component to pass as argument to l().
+ *   - #path: The URL path component to pass as argument to l().
  *   - #options: (optional) An array of options to pass to l().
  *
  * @return
@@ -4390,13 +4390,13 @@ 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);
   }
 
-  $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 6038fa5..cefd8f6 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -1094,7 +1094,7 @@ function menu_tree_output($tree) {
     $element['#theme'] = 'menu_link__' . strtr($data['link']['menu_name'], '-', '_');
     $element['#attributes']['class'] = $class;
     $element['#title'] = $data['link']['title'];
-    $element['#href'] = $data['link']['href'];
+    $element['#path'] = $data['link']['href'];
     $element['#localized_options'] = !empty($data['link']['localized_options']) ? $data['link']['localized_options'] : array();
     $element['#below'] = $data['below'] ? menu_tree_output($data['below']) : $data['below'];
     $element['#original_link'] = $data['link'];
@@ -1637,7 +1637,7 @@ function theme_menu_link(array $variables) {
   if ($element['#below']) {
     $sub_menu = drupal_render($element['#below']);
   }
-  $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/theme.inc b/core/includes/theme.inc
index 45737c5..7439a4b 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1743,7 +1743,7 @@ function theme_links($variables) {
           $link_element = array(
             '#type' => 'link',
             '#title' => $link['title'],
-            '#href' => $link['href'],
+            '#path' => $link['href'],
             '#ajax' => $link['ajax'],
             '#options' => array_diff_key($link, drupal_map_assoc(array('title', 'href', 'ajax'))),
           );
@@ -1871,7 +1871,7 @@ function theme_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/Entity/EntityConfirmFormBase.php b/core/lib/Drupal/Core/Entity/EntityConfirmFormBase.php
index ef05717..6754cca 100644
--- a/core/lib/Drupal/Core/Entity/EntityConfirmFormBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityConfirmFormBase.php
@@ -106,7 +106,7 @@ protected function actions(array $form, array &$form_state) {
     $actions['cancel'] = array(
       '#type' => 'link',
       '#title' => $this->getCancelText(),
-      '#href' => $options['path'],
+      '#path' => $options['path'],
       '#options' => $options,
     );
     return $actions;
diff --git a/core/lib/Drupal/Core/Entity/EntityNGConfirmFormBase.php b/core/lib/Drupal/Core/Entity/EntityNGConfirmFormBase.php
index fd04241..d500429 100644
--- a/core/lib/Drupal/Core/Entity/EntityNGConfirmFormBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityNGConfirmFormBase.php
@@ -106,7 +106,7 @@ protected function actions(array $form, array &$form_state) {
     $actions['cancel'] = array(
       '#type' => 'link',
       '#title' => $this->getCancelText(),
-      '#href' => $options['path'],
+      '#path' => $options['path'],
       '#options' => $options,
     );
     return $actions;
diff --git a/core/lib/Drupal/Core/Form/ConfirmFormBase.php b/core/lib/Drupal/Core/Form/ConfirmFormBase.php
index e5899c5..09a183b 100644
--- a/core/lib/Drupal/Core/Form/ConfirmFormBase.php
+++ b/core/lib/Drupal/Core/Form/ConfirmFormBase.php
@@ -72,7 +72,7 @@ public function buildForm(array $form, array &$form_state, Request $request = NU
     $form['actions']['cancel'] = array(
       '#type' => 'link',
       '#title' => $this->getCancelText(),
-      '#href' => $options['path'],
+      '#path' => $options['path'],
       '#options' => $options,
     );
     // By default, render the form using theme_confirm_form().
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index ca13d32..4efd078 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -259,7 +259,7 @@ function block_page_build(&$page) {
       $page['page_top']['backlink'] = array(
         '#type' => 'link',
         '#title' => t('Exit block region demonstration'),
-        '#href' => 'admin/structure/block' . (config('system.theme')->get('default') == $theme ? '' : '/list/' . $theme),
+        '#path' => 'admin/structure/block' . (config('system.theme')->get('default') == $theme ? '' : '/list/' . $theme),
         // Add the "overlay-restore" class to indicate this link should restore
         // the context in which the region demonstration page was opened.
         '#options' => array('attributes' => array('class' => array('block-demo-backlink', 'overlay-restore'))),
diff --git a/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php b/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
index de7e079..2247c0c 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
@@ -82,7 +82,7 @@ public function form($form, &$form_state, $facet = NULL) {
       $form['right']['all_plugins'] = array(
         '#type' => 'link',
         '#title' => $plugin_definition['all_plugins'],
-        '#href' => $this->allPluginsUrl($plugin_id, $display_plugin_definition),
+        '#path' => $this->allPluginsUrl($plugin_id, $display_plugin_definition),
       );
       foreach ($facets as $group => $values) {
         $form['right'][$group] = array(
diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc
index 2bff10b..1acf50c 100644
--- a/core/modules/comment/comment.admin.inc
+++ b/core/modules/comment/comment.admin.inc
@@ -119,7 +119,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
         'data' => array(
           '#type' => 'link',
           '#title' => $comment->subject->value,
-          '#href' => 'comment/' . $comment->id(),
+          '#path' => 'comment/' . $comment->id(),
           '#options' => array('attributes' => array('title' => truncate_utf8($comment->comment_body->value, 128)), 'fragment' => 'comment-' . $comment->id()),
         ),
       ),
@@ -128,7 +128,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
         'data' => array(
           '#type' => 'link',
           '#title' => $node_title,
-          '#href' => 'node/' . $comment->nid->target_id,
+          '#path' => 'node/' . $comment->nid->target_id,
         ),
       ),
       'changed' => format_date($comment->changed->value, 'short'),
diff --git a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
index 5709feb..97510b9 100644
--- a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
+++ b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
@@ -104,7 +104,7 @@ public function diff($config_file) {
         ),
       ),
       '#title' => "Back to 'Synchronize configuration' page.",
-      '#href' => 'admin/config/development/sync',
+      '#path' => 'admin/config/development/sync',
     );
 
     // @todo Remove use of drupal_set_title() when
diff --git a/core/modules/email/lib/Drupal/email/Plugin/field/formatter/MailToFormatter.php b/core/modules/email/lib/Drupal/email/Plugin/field/formatter/MailToFormatter.php
index 33e5920..1c11f8f 100644
--- a/core/modules/email/lib/Drupal/email/Plugin/field/formatter/MailToFormatter.php
+++ b/core/modules/email/lib/Drupal/email/Plugin/field/formatter/MailToFormatter.php
@@ -36,7 +36,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
       $elements[$delta] = array(
         '#type' => 'link',
         '#title' => $item['value'],
-        '#href' => 'mailto:' . $item['value'],
+        '#path' => 'mailto:' . $item['value'],
       );
     }
 
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/formatter/EntityReferenceLabelFormatter.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/formatter/EntityReferenceLabelFormatter.php
index 568d3d8..7ca5b36 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/formatter/EntityReferenceLabelFormatter.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/formatter/EntityReferenceLabelFormatter.php
@@ -70,7 +70,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
           $elements[$delta] = array(
             '#type' => 'link',
             '#title' => $label,
-            '#href' => $uri['path'],
+            '#path' => $uri['path'],
             '#options' => $uri['options'],
           );
         }
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
index ec602ff..ee146b8 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
@@ -166,13 +166,13 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL,
         'type' => array(
           '#type' => 'link',
           '#title' => $field_types[$field['type']]['label'],
-          '#href' => $admin_field_path . '/field',
+          '#path' => $admin_field_path . '/field',
           '#options' => array('attributes' => array('title' => t('Edit field settings.'))),
         ),
         'widget_type' => array(
           '#type' => 'link',
           '#title' => $widget_configuration ? $widget_types[$widget_configuration['type']]['label'] : $widget_types['hidden']['label'],
-          '#href' => $admin_field_path . '/widget-type',
+          '#path' => $admin_field_path . '/widget-type',
           '#options' => array('attributes' => array('title' => t('Change widget type.'))),
         ),
       );
diff --git a/core/modules/forum/forum.admin.inc b/core/modules/forum/forum.admin.inc
index 2a8a50d..308d398 100644
--- a/core/modules/forum/forum.admin.inc
+++ b/core/modules/forum/forum.admin.inc
@@ -230,7 +230,7 @@ function forum_overview($form, &$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 (in_array($form['terms'][$key]['#term']->id(), $config->get('containers'))) {
         $form['terms'][$key]['operations']['#links']['edit']['title'] = t('edit container');
diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index 4d39d05..1713f00 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -103,13 +103,13 @@ function image_style_form($form, &$form_state, $style) {
       $form['effects'][$key]['configure'] = array(
         '#type' => 'link',
         '#title' => t('edit'),
-        '#href' => 'admin/config/media/image-styles/manage/' . $style->id() . '/effects/' . $key,
+        '#path' => 'admin/config/media/image-styles/manage/' . $style->id() . '/effects/' . $key,
         '#access' => isset($effect['form callback']),
       );
       $form['effects'][$key]['remove'] = array(
         '#type' => 'link',
         '#title' => t('delete'),
-        '#href' => 'admin/config/media/image-styles/manage/' . $style->id() . '/effects/' . $key . '/delete',
+        '#path' => 'admin/config/media/image-styles/manage/' . $style->id() . '/effects/' . $key . '/delete',
       );
     }
   }
@@ -328,7 +328,7 @@ function image_effect_form($form, &$form_state, $style, $effect) {
   $form['actions']['cancel'] = array(
     '#type' => 'link',
     '#title' => t('Cancel'),
-    '#href' => 'admin/config/media/image-styles/manage/' . $style->id(),
+    '#path' => 'admin/config/media/image-styles/manage/' . $style->id(),
   );
 
   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 5670d8f..1e26ac1 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
@@ -53,7 +53,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',
@@ -63,7 +63,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(
@@ -74,7 +74,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/link/lib/Drupal/link/Plugin/field/formatter/LinkFormatter.php b/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkFormatter.php
index b75896a..e6fb6b5 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkFormatter.php
+++ b/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkFormatter.php
@@ -175,7 +175,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
         $element[$delta] = array(
           '#type' => 'link',
           '#title' => $link_title,
-          '#href' => $item['path'],
+          '#path' => $item['path'],
           '#options' => $item['options'],
         );
       }
diff --git a/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkSeparateFormatter.php b/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkSeparateFormatter.php
index d39d420..399723a 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkSeparateFormatter.php
+++ b/core/modules/link/lib/Drupal/link/Plugin/field/formatter/LinkSeparateFormatter.php
@@ -70,7 +70,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
         '#theme' => 'link_formatter_link_separate',
         '#title' => $link_title,
         '#url_title' => $url_title,
-        '#href' => $item['path'],
+        '#path' => $item['path'],
         '#options' => $item['options'],
       );
     }
diff --git a/core/modules/link/link.module b/core/modules/link/link.module
index bfd6ebf..359d250 100644
--- a/core/modules/link/link.module
+++ b/core/modules/link/link.module
@@ -99,7 +99,7 @@ function link_field_presave(EntityInterface $entity, $field, $instance, $langcod
 function link_theme() {
   return array(
     'link_formatter_link_separate' => array(
-      'variables' => array('title' => NULL, 'url_title' => NULL, 'href' => NULL, 'options' => array()),
+      'variables' => array('title' => NULL, 'url_title' => NULL, 'path' => NULL, 'options' => array()),
     ),
   );
 }
@@ -113,7 +113,7 @@ function theme_link_formatter_link_separate($vars) {
   if (!empty($vars['title'])) {
     $output .= '<div class="link-title">' . check_plain($vars['title']) . '</div>';
   }
-  $output .= '<div class="link-url">' . l($vars['url_title'], $vars['href'], $vars['options']) . '</div>';
+  $output .= '<div class="link-url">' . l($vars['url_title'], $vars['path'], $vars['options']) . '</div>';
   $output .= '</div>';
   return $output;
 }
diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc
index 7346712..8175431 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -168,14 +168,14 @@ function _menu_overview_tree_form($tree, $delta = 50) {
         'title' => t('Edit'),
         'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit',
       );
-      $operations['edit'] = array('#type' => 'link', '#title' => t('Edit'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit');
+      $operations['edit'] = array('#type' => 'link', '#title' => t('Edit'), '#path' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit');
       // Only items created by the menu module can be deleted.
       if ($item['module'] == 'menu' || $item['updated'] == 1) {
         $links['delete'] = array(
           'title' => t('Delete'),
           'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete',
         );
-        $operations['delete'] = array('#type' => 'link', '#title' => t('Delete'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete');
+        $operations['delete'] = array('#type' => 'link', '#title' => t('Delete'), '#path' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete');
       }
       // Set the reset column.
       elseif ($item['module'] == 'system' && $item['customized']) {
@@ -183,7 +183,7 @@ function _menu_overview_tree_form($tree, $delta = 50) {
           'title' => t('Reset'),
           'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset',
         );
-        $operations['reset'] = array('#type' => 'link', '#title' => t('Reset'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset');
+        $operations['reset'] = array('#type' => 'link', '#title' => t('Reset'), '#path' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset');
       }
       $form[$mlid]['operations'] = array(
         '#type' => 'operations',
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 821f41a..47156d9 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -267,7 +267,7 @@ function node_admin_nodes() {
     $form['nodes'][$node->nid]['title'] = array(
       '#type' => 'link',
       '#title' => $node->label(),
-      '#href' => 'node/' . $node->nid,
+      '#path' => 'node/' . $node->nid,
       '#options' => $l_options,
       '#suffix' => ' ' . drupal_render($mark),
     );
@@ -328,7 +328,7 @@ function node_admin_nodes() {
       $form['nodes'][$node->nid]['operations'] = array(
         '#type' => 'link',
         '#title' => $link['title'],
-        '#href' => $link['href'],
+        '#path' => $link['href'],
         '#options' => array('query' => $link['query']),
       );
     }
diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module
index 180ea97..c390026 100644
--- a/core/modules/overlay/overlay.module
+++ b/core/modules/overlay/overlay.module
@@ -299,7 +299,7 @@ function overlay_disable_message() {
       'profile_link' => array(
         '#type' => 'link',
         '#title' => t('If you have problems accessing administrative pages on this site, disable the overlay on your profile page.'),
-        '#href' => 'user/' . $user->uid . '/edit',
+        '#path' => 'user/' . $user->uid . '/edit',
         '#options' => array(
           'query' => drupal_get_destination(),
           'fragment' => 'edit-overlay-control',
@@ -315,7 +315,7 @@ function overlay_disable_message() {
       'dismiss_message_link' => array(
         '#type' => 'link',
         '#title' => t('Dismiss this message.'),
-        '#href' => 'overlay/dismiss-message',
+        '#path' => 'overlay/dismiss-message',
         '#options' => array(
           'query' => drupal_get_destination() + array(
             // Add a token to protect against cross-site request forgeries.
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index a14a3e7..0fcb982 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -527,7 +527,7 @@ function shortcut_preprocess_page(&$variables) {
         '#prefix' => '<div class="add-or-remove-shortcuts ' . $link_mode . '-shortcut">',
         '#type' => 'link',
         '#title' => '<span class="icon">'. t('Add or remove shortcut') .'</span><span class="text">' . $link_text . '</span>',
-        '#href' => $link_path,
+        '#path' => $link_path,
         '#options' => array('query' => $query, 'html' => TRUE),
         '#suffix' => '</div>',
       );
@@ -547,7 +547,7 @@ function shortcut_toolbar() {
     $configure_link = array(
       '#type' => 'link',
       '#title' => t('Edit shortcuts'),
-      '#href' => 'admin/config/user-interface/shortcut/manage/' . $shortcut_set->id(),
+      '#path' => 'admin/config/user-interface/shortcut/manage/' . $shortcut_set->id(),
       '#options' => array('attributes' => array('class' => array('edit-shortcuts'))),
     );
   }
@@ -557,7 +557,7 @@ function shortcut_toolbar() {
       'tab' => array(
         '#type' => 'link',
         '#title' => t('Shortcuts'),
-        '#href' => 'admin/config/user-interface/shortcut',
+        '#path' => 'admin/config/user-interface/shortcut',
         '#options' => array(
           'attributes' => array(
             'title' => t('Shortcuts'),
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
index 35c0ce6..9bbd67f 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
@@ -215,7 +215,7 @@ public function buildForm(array $form, array &$form_state, $test_id = NULL) {
     $form['action']['return'] = array(
       '#type' => 'link',
       '#title' => 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/Tests/Common/RenderTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
index 31e4f34..76d2af6 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/RenderTest.php
@@ -283,13 +283,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 b6e1ae7..8053a7c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/UrlTest.php
@@ -43,7 +43,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));
@@ -103,7 +103,7 @@ function testLinkCustomClass() {
     $type_link = array(
       '#type' => 'link',
       '#title' => $this->randomName(),
-      '#href' => current_path(),
+      '#path' => current_path(),
       '#options' => array(
         'attributes' => array(
           'class' => array($class_theme),
@@ -130,7 +130,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);
@@ -139,7 +139,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/lib/Drupal/system/Tests/Menu/TreeOutputTest.php b/core/modules/system/lib/Drupal/system/Tests/Menu/TreeOutputTest.php
index 01794f0..f921a65 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Menu/TreeOutputTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Menu/TreeOutputTest.php
@@ -66,7 +66,7 @@ function testMenuTreeData() {
     $this->assertEqual( $output['1']['#theme'], 'menu_link__main_menu', 'Hyphen is changed to a dash on menu_link');
     $this->assertEqual( $output['#theme_wrappers'][0], 'menu_tree__main_menu', 'Hyphen is changed to a dash on menu_tree wrapper');
     // Looking for child items in the data
-    $this->assertEqual( $output['1']['#below']['2']['#href'], 'a/b', 'Checking the href on a child item');
+    $this->assertEqual( $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/system/system.admin.inc b/core/modules/system/system.admin.inc
index 957db86..6200692 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -453,7 +453,7 @@ function system_modules($form, $form_state = array()) {
         $extra['links']['help'] = array(
           '#type' => 'link',
           '#title' => t('Help'),
-          '#href' => "admin/help/$filename",
+          '#path' => "admin/help/$filename",
           '#options' => array('attributes' => array('class' =>  array('module-link', 'module-link-help'), 'title' => t('Help'))),
         );
       }
@@ -463,7 +463,7 @@ function system_modules($form, $form_state = array()) {
       $extra['links']['permissions'] = array(
         '#type' => 'link',
         '#title' => t('Permissions'),
-        '#href' => 'admin/people/permissions',
+        '#path' => 'admin/people/permissions',
         '#options' => array('fragment' => 'module-' . $filename, 'attributes' => array('class' => array('module-link', 'module-link-permissions'), 'title' => t('Configure permissions'))),
       );
     }
@@ -475,7 +475,7 @@ function system_modules($form, $form_state = array()) {
         $extra['links']['configure'] = array(
           '#type' => 'link',
           '#title' => t('Configure'),
-          '#href' => $configure_link['href'],
+          '#path' => $configure_link['href'],
           '#options' => array('attributes' => array('class' => array('module-link', 'module-link-configure'), 'title' => $configure_link['description'])),
         );
       }
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 125f807..4f23b17 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -3323,7 +3323,7 @@ function confirm_form($form, $question, $path, $description = NULL, $yes = NULL,
   $form['actions']['cancel'] = array(
     '#type' => 'link',
     '#title' => $no ? $no : t('Cancel'),
-    '#href' => $options['path'],
+    '#path' => $options['path'],
     '#options' => $options,
   );
   // By default, render the form using theme_confirm_form().
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 e358018..9651e58 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.module
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.module
@@ -119,7 +119,7 @@ function ajax_test_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',
@@ -279,7 +279,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/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 77b8606..f2e22ac 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
@@ -32,12 +32,12 @@ public function typeLinkActiveClass() {
       'no_query' => array(
         '#type' => 'link',
         '#title' => t('Link with no query string'),
-        '#href' => current_path(),
+        '#path' => current_path(),
       ),
       'with_query' => array(
         '#type' => 'link',
         '#title' => t('Link with a query string'),
-        '#href' => current_path(),
+        '#path' => current_path(),
         '#options' => array(
           'query' => array(
             'foo' => 'bar',
@@ -48,7 +48,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/taxonomy/lib/Drupal/taxonomy/Plugin/field/formatter/LinkFormatter.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/formatter/LinkFormatter.php
index b44002e..c201a01 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/formatter/LinkFormatter.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/formatter/LinkFormatter.php
@@ -47,7 +47,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
         $elements[$delta] = array(
           '#type' => 'link',
           '#title' => $term->label(),
-          '#href' => $uri['path'],
+          '#path' => $uri['path'],
           '#options' => $uri['options'],
         );
       }
diff --git a/core/modules/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc
index 24b71f9..82625ac 100644
--- a/core/modules/taxonomy/taxonomy.admin.inc
+++ b/core/modules/taxonomy/taxonomy.admin.inc
@@ -163,7 +163,7 @@ function taxonomy_overview_terms($form, &$form_state, Vocabulary $vocabulary) {
       '#prefix' => isset($term->depth->value) && $term->depth->value > 0 ? theme('indentation', array('size' => $term->depth->value)) : '',
       '#type' => 'link',
       '#title' => $term->label(),
-      '#href' => "taxonomy/term/" . $term->id(),
+      '#path' => "taxonomy/term/" . $term->id(),
     );
     if ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
       $parent_fields = TRUE;
diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/field/formatter/TelephoneLinkFormatter.php b/core/modules/telephone/lib/Drupal/telephone/Plugin/field/formatter/TelephoneLinkFormatter.php
index 208d6bd..7f84f30 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Plugin/field/formatter/TelephoneLinkFormatter.php
+++ b/core/modules/telephone/lib/Drupal/telephone/Plugin/field/formatter/TelephoneLinkFormatter.php
@@ -93,7 +93,7 @@ public function viewElements(EntityInterface $entity, $langcode, array $items) {
       $element[$delta] = array(
         '#type' => 'link',
         '#title' => $item['title'],
-        '#href' => $href,
+        '#path' => $href,
         '#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 ab7c2ad..3c91ea3 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 9bf59f9..acee8d6 100644
--- a/core/modules/toolbar/toolbar.api.php
+++ b/core/modules/toolbar/toolbar.api.php
@@ -73,7 +73,7 @@ function hook_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Home'),
-      '#href' => '<front>',
+      '#path' => '<front>',
       '#options' => array(
         'attributes' => array(
           'title' => t('Home page'),
@@ -97,7 +97,7 @@ function hook_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Shopping cart'),
-      '#href' => '/cart',
+      '#path' => '/cart',
       '#options' => array(
         'html' => FALSE,
         'attributes' => array(
@@ -132,7 +132,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 52d3988..3137181 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -107,7 +107,7 @@ function toolbar_element_info() {
     'tab' => array(
       '#type' => 'link',
       '#title' => NULL,
-      '#href' => '',
+      '#path' => '',
     ),
   );
   return $elements;
@@ -410,7 +410,7 @@ function toolbar_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Home'),
-      '#href' => '<front>',
+      '#path' => '<front>',
       '#options' => array(
         'attributes' => array(
           'title' => t('Home page'),
@@ -452,7 +452,7 @@ function toolbar_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => t('Menu'),
-      '#href' => 'admin',
+      '#path' => 'admin',
       '#options' => array(
         'attributes' => array(
           'title' => t('Admin menu'),
diff --git a/core/modules/translation_entity/translation_entity.module b/core/modules/translation_entity/translation_entity.module
index dec0460..8710f16 100644
--- a/core/modules/translation_entity/translation_entity.module
+++ b/core/modules/translation_entity/translation_entity.module
@@ -819,7 +819,7 @@ function translation_entity_form_field_ui_field_edit_form_alter(array &$form, ar
         '#type' => 'link',
         '#prefix' => t('This field has data in existing content.') . ' ',
         '#title' => !$translatable ? t('Enable translation') : t('Disable translation'),
-        '#href' => 'admin/config/regional/translation_entity/translatable/' . $field_name,
+        '#path' => 'admin/config/regional/translation_entity/translatable/' . $field_name,
         '#options' => array('query' => drupal_get_destination()),
         '#access' => user_access('administer entity translation'),
       ),
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index e7ee37a..bdec56b 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -2548,7 +2548,7 @@ function user_toolbar() {
     'tab' => array(
       '#type' => 'link',
       '#title' => user_format_name($user),
-      '#href' => 'user',
+      '#path' => 'user',
       '#options' => array(
         'attributes' => array(
           'title' => t('My account'),
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 cc921ae..7e94413 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
@@ -108,7 +108,7 @@ public function buildForm(array $form, array &$form_state) {
         'link' => array(
           '#type' => 'link',
           '#title' => '<span>' . t('Remove') . '</span>',
-          '#href' => 'javascript:void()',
+          '#path' => 'javascript:void()',
           '#options' => array(
             'html' => TRUE,
           ),
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
index 1f3869c..aaad72f 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
@@ -397,7 +397,7 @@ public function getDisplayDetails($view, $display) {
               '#type' => 'link',
               '#title' => t('View @display', array('@display' => $display['display_title'])),
               '#options' => array('alt' => array(t("Go to the real page for this display"))),
-              '#href' => $path,
+              '#path' => $path,
               '#prefix' => '<li class="view">',
               "#suffix" => '</li>',
             );
