diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/HandlerBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/HandlerBase.php
index a1d357a..70ba409 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/HandlerBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/HandlerBase.php
@@ -73,6 +73,15 @@
   public $relationship = NULL;
 
   /**
+   * The type of this handler.
+   *
+   * The type of a handler is one of ViewExecutable::viewsHandlerTypes().
+   *
+   * @var string
+   */
+  public $handler_type;
+
+  /**
    * Constructs a Handler object.
    */
   public function __construct(array $configuration, $plugin_id, array $plugin_definition) {
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
index 61cb8e0..ef855e2 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
@@ -50,7 +50,15 @@ public function buildOptionsForm(&$form, &$form_state) {
    * Overrides Drupal\views\Plugin\views\AreaPluginBase::preRender().
    */
   public function preRender(array $results) {
+    parent::preRender($results);
+
     if (!empty($this->options['title'])) {
+      // Don't run the preRender function if this handler is part of the empty
+      // result set, and the result is not empty.
+      if (!empty($results) && $this->handler_type == 'empty') {
+        return;
+      }
+
       $value = $this->globalTokenReplace($this->options['title']);
       $this->view->setTitle($this->sanitizeValue($value, 'xss_admin'), PASS_THROUGH);
     }
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTitleTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTitleTest.php
new file mode 100644
index 0000000..ea58a3b
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTitleTest.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\views\Tests\Handler\AreaTitleTest.
+ */
+
+namespace Drupal\views\Tests\Handler;
+
+use Drupal\views\Tests\ViewUnitTestBase;
+
+/**
+ * Tests the title area handler.
+ *
+ * @see Drupal\views\Plugin\views\area\Title
+ */
+class AreaTitleTest extends ViewUnitTestBase {
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = array('test_area_title');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Area: Title',
+      'description' => 'Tests the title area handler.',
+      'group' => 'Views Handlers',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp();
+  }
+
+  /**
+   * Tests the title area handler.
+   */
+  public function testTitleText() {
+    $view = views_get_view('test_area_title');
+
+    $view->setDisplay('default');
+    $this->executeView($view);
+    $view->render();
+    $this->assertFalse($view->getTitle(), 'The title area does not override the title if the view is not empty.');
+    $view->destroy();
+
+    $view->setDisplay('default');
+    $this->executeView($view);
+    $view->result = array();
+    $view->render();
+    $this->assertEqual($view->getTitle(), 'test_title_empty', 'The title area should override the title if the result is empty.');
+    $view->destroy();
+
+    $view->setDisplay('page_1');
+    $this->executeView($view);
+    $view->render();
+    $this->assertEqual($view->getTitle(), 'test_title_header', 'The title area on the header should override the title if the result is not empty.');
+    $view->destroy();
+
+    $view->setDisplay('page_1');
+    $this->executeView($view);
+    $view->result = array();
+    $view->render();
+    $this->assertEqual($view->getTitle(), 'test_title_header', 'The title area on the header should override the title if the result is empty.');
+    $view->destroy();
+  }
+
+}
diff --git a/core/modules/views/tests/views_test_config/test_views/views.view.test_area_title.yml b/core/modules/views/tests/views_test_config/test_views/views.view.test_area_title.yml
new file mode 100644
index 0000000..05a35a9
--- /dev/null
+++ b/core/modules/views/tests/views_test_config/test_views/views.view.test_area_title.yml
@@ -0,0 +1,62 @@
+base_table: views_test_data
+core: '8'
+description: ''
+status: '1'
+display:
+  default:
+    display_options:
+      defaults:
+        fields: '0'
+        pager: '0'
+        pager_options: '0'
+        sorts: '0'
+      fields:
+        id:
+          field: id
+          id: id
+          relationship: none
+          table: views_test_data
+          plugin_id: numeric
+      pager:
+        options:
+          offset: '0'
+        type: none
+      pager_options: {  }
+      sorts:
+        id:
+          field: id
+          id: id
+          order: ASC
+          relationship: none
+          table: views_test_data
+          plugin_id: numeric
+      empty:
+        title:
+          field: title
+          id: title
+          table: views
+          plugin_id: title
+          title: test_title_empty
+    display_plugin: default
+    display_title: Master
+    id: default
+    position: '0'
+  page_1:
+    display_options:
+      defaults:
+        empty: '0'
+        header: '0'
+      header:
+        title:
+          field: title
+          id: title
+          table: views
+          plugin_id: title
+          title: test_title_header
+    display_plugin: page
+    display_title: Page 1
+    id: page_1
+    position: '1'
+human_name: ''
+id: test_area_title
+tag: ''
