diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
index 7156e10..08fd58a 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
@@ -12,13 +12,20 @@ namespace Drupal\node\Tests;
  */
 class NodeRevisionPermissionsTest extends NodeTestBase {
   protected $node_revisions = array();
-  protected $accounts = array();
+  protected $profile = "standard";
 
   // Map revision permission names to node revision access ops.
   protected $map = array(
-    'view' => 'view revisions',
-    'update' => 'revert revisions',
-    'delete' => 'delete revisions',
+    'view' => 'view any revisions',
+    'update' => 'revert any revisions',
+    'delete' => 'delete any revisions',
+  );
+
+  // Map revision permission names to node type revision access ops.
+  protected $type_map = array(
+    'view' => 'view page revisions',
+    'update' => 'revert page revisions',
+    'delete' => 'delete page revisions',
   );
 
   public static function getInfo() {
@@ -32,19 +39,28 @@ class NodeRevisionPermissionsTest extends NodeTestBase {
   function setUp() {
     parent::setUp();
 
-    // Create a node with several revisions.
-    $node = $this->drupalCreateNode();
-    $this->node_revisions[] = $node;
-
-    for ($i = 0; $i < 3; $i++) {
-      // Create a revision for the same nid and settings with a random log.
-      $revision = clone $node;
-      $revision->revision = 1;
-      $revision->log = $this->randomName(32);
-      node_save($revision);
-      $this->node_revisions[] = $revision;
+    $types = array('page', 'article');
+
+    foreach ($types as $type) {
+      // Create a node with several revisions.
+      $nodes[$type] = $this->drupalCreateNode(array('type' => $type));
+      $this->node_revisions[$type][] = $nodes[$type];
+
+      for ($i = 0; $i < 3; $i++) {
+        // Create a revision for the same nid and settings with a random log.
+        $revision = clone $nodes[$type];
+        $revision->revision = 1;
+        $revision->log = $this->randomName(32);
+        node_save($revision);
+        $this->node_revisions[$type][] = $revision;
+      }
     }
+  }
 
+  /**
+   * Tests general revision access permissions.
+   */
+  function testNodeRevisionAccessAnyType() {
     // Create three users, one with each revision permission.
     foreach ($this->map as $op => $permission) {
       // Create the user.
@@ -57,29 +73,24 @@ class NodeRevisionPermissionsTest extends NodeTestBase {
         )
       );
       $account->op = $op;
-      $this->accounts[] = $account;
+      $accounts[] = $account;
     }
 
     // Create an admin account (returns TRUE for all revision permissions).
     $admin_account = $this->drupalCreateUser(array('access content', 'administer nodes'));
     $admin_account->is_admin = TRUE;
-    $this->accounts['admin'] = $admin_account;
+    $accounts['admin'] = $admin_account;
 
     // Create a normal account (returns FALSE for all revision permissions).
     $normal_account = $this->drupalCreateUser();
     $normal_account->op = FALSE;
-    $this->accounts[] = $normal_account;
-  }
+    $accounts[] = $normal_account;
 
-  /**
-   * Tests the _node_revision_access() function.
-   */
-  function testNodeRevisionAccess() {
-    $revision = $this->node_revisions[1];
+    $revision = $this->node_revisions['page'][1];
 
     $parameters = array(
       'op' => array_keys($this->map),
-      'account' => $this->accounts,
+      'account' => $accounts,
     );
 
     $permutations = $this->generatePermutations($parameters);
@@ -94,7 +105,7 @@ class NodeRevisionPermissionsTest extends NodeTestBase {
 
     // Test that access is FALSE for a node administrator with an invalid $node
     // or $op parameters.
-    $admin_account = $this->accounts['admin'];
+    $admin_account = $accounts['admin'];
     $this->assertFalse(_node_revision_access($revision, 'invalid-op', $admin_account), '_node_revision_access() returns FALSE with an invalid op.');
 
     // Test that the $account parameter defaults to the "logged in" user.
@@ -103,4 +114,49 @@ class NodeRevisionPermissionsTest extends NodeTestBase {
     $this->assertTrue(_node_revision_access($revision, 'view'), '_node_revision_access() returns TRUE when used with global user.');
     $GLOBALS['user'] = $original_user;
   }
+
+  /**
+   * Tests revision access permissions for a specific content type.
+   */
+  function testNodeRevisionAccessPerType() {
+    // Create three users, one with each revision permission.
+    foreach ($this->type_map as $op => $permission) {
+      // Create the user.
+      $account = $this->drupalCreateUser(
+        array(
+          'access content',
+          'edit any page content',
+          'delete any page content',
+          $permission,
+        )
+      );
+      $account->op = $op;
+      $accounts[] = $account;
+    }
+
+    $parameters = array(
+      'op' => array_keys($this->type_map),
+      'account' => $accounts,
+    );
+
+    // Test that the accounts have access to the correspoding page revision permissions.
+    $revision = $this->node_revisions['page'][1];
+
+    $permutations = $this->generatePermutations($parameters);
+    foreach ($permutations as $case) {
+      if ($case['op'] == $case['account']->op) {
+        $this->assertTrue(_node_revision_access($revision, $case['op'], $case['account']), "{$this->type_map[$case['op']]} granted.");
+      }
+      else {
+        $this->assertFalse(_node_revision_access($revision, $case['op'], $case['account']), "{$this->type_map[$case['op']]} not granted.");
+      }
+    }
+
+    // Test that the accounts have no access to the article revisions.
+    $revision = $this->node_revisions['article'][1];
+
+    foreach ($permutations as $case) {
+      $this->assertFalse(_node_revision_access($revision, $case['op'], $case['account']), "{$this->type_map[$case['op']]} did not grant revision permission for articles.");
+    }
+  }
 }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
index ee12f0a..91045a5 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
@@ -13,8 +13,8 @@ class NodeRevisionsTest extends NodeTestBase {
 
   public static function getInfo() {
     return array(
-      'name' => 'Node revisions',
-      'description' => 'Create a node with revisions and test viewing, saving, reverting, and deleting revisions.',
+      'name' => 'Node revisions by type',
+      'description' => 'Create a node with revisions and test viewing, saving, reverting, and deleting revisions for users with access for this content type.',
       'group' => 'Node',
     );
   }
@@ -22,9 +22,17 @@ class NodeRevisionsTest extends NodeTestBase {
   function setUp() {
     parent::setUp();
 
-    // Create and login user.
-    $web_user = $this->drupalCreateUser(array('view revisions', 'revert revisions', 'edit any page content',
-                                               'delete revisions', 'delete any page content'));
+    // Create and log in user.
+    $web_user = $this->drupalCreateUser(
+      array(
+        'view page revisions',
+        'revert page revisions',
+        'delete page revisions',
+        'edit any page content',
+        'delete any page content'
+      )
+    );
+
     $this->drupalLogin($web_user);
 
     // Create initial node.
@@ -158,3 +166,144 @@ class NodeRevisionsTest extends NodeTestBase {
     $this->assertTrue(empty($node_revision->log), 'After a new node revision is saved with an empty log message, the log message for the node is empty.');
   }
 }
+
+/**
+ * Tests actions against revisions for user with access to all revisions.
+ */
+class NodeRevisionsAllTestCase extends NodeTestBase {
+  protected $nodes;
+  protected $logs;
+  protected $profile = "standard";
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Node revisions all',
+      'description' => 'Create a node with revisions and test viewing, saving, reverting, and deleting revisions for user with access to all.',
+      'group' => 'Node',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    // Create and log in user.
+    $web_user = $this->drupalCreateUser(
+      array(
+        'view page revisions',
+        'revert page revisions',
+        'delete page revisions',
+        'edit any page content',
+        'delete any page content'
+      )
+    );
+    $this->drupalLogin($web_user);
+
+    // Create an initial node.
+    $node = $this->drupalCreateNode();
+
+    $settings = get_object_vars($node);
+    $settings['revision'] = 1;
+
+    $nodes = array();
+    $logs = array();
+
+    // Get the original node.
+    $nodes[] = $node;
+
+    // Create three revisions.
+    $revision_count = 3;
+    for ($i = 0; $i < $revision_count; $i++) {
+      $logs[] = $settings['log'] = $this->randomName(32);
+
+      // Create revision with a random title and body and update variables.
+      $this->drupalCreateNode($settings);
+      $node = node_load($node->nid); // Make sure we get revision information.
+      $settings = get_object_vars($node);
+      $nodes[] = $node;
+    }
+
+    $this->nodes = $nodes;
+    $this->logs = $logs;
+  }
+
+  /**
+   * Checks node revision operations.
+   */
+  function testRevisions() {
+    $nodes = $this->nodes;
+    $logs = $this->logs;
+
+    // Get last node for simple checks.
+    $node = $nodes[3];
+
+    // Create and login user.
+    $content_admin = $this->drupalCreateUser(
+      array(
+        'view any revisions',
+        'revert any revisions',
+        'delete any revisions',
+        'edit any page content',
+        'delete any page content'
+      )
+    );
+    $this->drupalLogin($content_admin);
+
+    // Confirm the correct revision text appears on "view revisions" page.
+    $this->drupalGet("node/$node->nid/revisions/$node->vid/view");
+    $this->assertText($node->body[LANGUAGE_NOT_SPECIFIED][0]['value'], t('Correct text displays for version.'));
+
+    // Confirm the correct log message appears on "revisions overview" page.
+    $this->drupalGet("node/$node->nid/revisions");
+    foreach ($logs as $log) {
+      $this->assertText($log, t('Log message found.'));
+    }
+
+    // Confirm that this is the current revision.
+    $this->assertTrue($node->isCurrentRevision(), 'Third node revision is the current one.');
+
+    // Confirm that revisions revert properly.
+    $this->drupalPost("node/$node->nid/revisions/{$nodes[1]->vid}/revert", array(), t('Revert'));
+    $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.',
+      array(
+        '@type' => 'Basic page',
+        '%title' => $nodes[1]->title,
+        '%revision-date' => format_date($nodes[1]->revision_timestamp)
+      )),
+      'Revision reverted.');
+    $reverted_node = node_load($node->nid);
+    $this->assertTrue(($nodes[1]->body[LANGUAGE_NOT_SPECIFIED][0]['value'] == $reverted_node->body[LANGUAGE_NOT_SPECIFIED][0]['value']), t('Node reverted correctly.'));
+
+    // Confirm that this is not the current version.
+    $node = node_load($node->nid, $node->vid);
+    $this->assertFalse($node->isCurrentRevision(), 'Third node revision is not the current one.');
+
+    // Confirm revisions delete properly.
+    $this->drupalPost("node/$node->nid/revisions/{$nodes[1]->vid}/delete", array(), t('Delete'));
+    $this->assertRaw(t('Revision from %revision-date of @type %title has been deleted.',
+      array(
+        '%revision-date' => format_date($nodes[1]->revision_timestamp),
+        '@type' => 'Basic page',
+        '%title' => $nodes[1]->title,
+      )),
+      'Revision deleted.');
+    $this->assertTrue(db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid and vid = :vid',
+      array(':nid' => $node->nid, ':vid' => $nodes[1]->vid))->fetchField() == 0,
+      'Revision not found.');
+
+    // Set the revision timestamp to an older date to make sure that the
+    // confirmation message correctly displays the stored revision date.
+    $old_revision_date = REQUEST_TIME - 86400;
+    db_update('node_revision')
+      ->condition('vid', $nodes[2]->vid)
+      ->fields(array(
+        'timestamp' => $old_revision_date,
+      ))
+      ->execute();
+    $this->drupalPost("node/$node->nid/revisions/{$nodes[2]->vid}/revert", array(), t('Revert'));
+    $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.', array(
+      '@type' => 'Basic page',
+      '%title' => $nodes[2]->title,
+      '%revision-date' => format_date($old_revision_date),
+    )));
+  }
+}
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/RdfaMarkupTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/RdfaMarkupTest.php
index 96d2553..261618f 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/RdfaMarkupTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/RdfaMarkupTest.php
@@ -93,7 +93,7 @@ class RdfaMarkupTest extends WebTestBase {
    */
   function testAttributesInMarkupFile() {
     // Create a user to post the image.
-    $admin_user = $this->drupalCreateUser(array('edit own article content', 'revert revisions', 'administer content types'));
+    $admin_user = $this->drupalCreateUser(array('edit own article content', 'revert article revisions', 'administer content types'));
     $this->drupalLogin($admin_user);
 
     $langcode = LANGUAGE_NOT_SPECIFIED;
