diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Messages.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Messages.php
new file mode 100644
index 0000000..e00739f
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Messages.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\views\area\Messages.
+ */
+
+namespace Drupal\views\Plugin\views\area;
+
+/**
+ * Provides an area for messages.
+ *
+ * @ingroup views_area_handlers
+ *
+ * @PluginID("messages")
+ */
+class Messages extends AreaPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function defineOptions() {
+    $options = parent::defineOptions();
+    // Set the default to TRUE so it shows on empty pages by default.
+    $options['empty']['default'] = TRUE;
+    return $options;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function render($empty = FALSE) {
+    if (!$empty || !empty($this->options['empty'])) {
+      return array(
+        '#theme' => 'status_messages',
+      );
+    }
+    return array();
+  }
+
+}
diff --git a/core/modules/views/views.views.inc b/core/modules/views/views.views.inc
index d11c4d7..203468b 100644
--- a/core/modules/views/views.views.inc
+++ b/core/modules/views/views.views.inc
@@ -90,6 +90,14 @@ function views_views_data() {
     ),
   );
 
+  $data['views']['messages'] = array(
+    'title' => t('Messages'),
+    'help' => t('Displays messages in the area.'),
+    'area' => array(
+      'id' => 'messages',
+    ),
+  );
+
   $data['views']['http_status_code'] = array(
     'title' => t('Response status code'),
     'help' => t('Alter the HTTP response status code used by this view, mostly helpful for empty results.'),
