diff --git a/composer.json b/composer.json
index b25e8cfdc76d269d9b5edaba79f49430a3b7f15d..2a16c71a528f70bd6333f3fd000f616b09a30d20 100644
--- a/composer.json
+++ b/composer.json
@@ -122,7 +122,7 @@
         "drupal/externalauth": "1.1",
         "drupal/features": "3.8",
         "drupal/field_group": "3.0-rc1",
-        "drupal/field_permissions": "1.0-beta1",
+        "drupal/field_permissions": "1.0-rc2",
         "drupal/file_browser": "1.1",
         "drupal/focal_point": "1.0-beta6",
         "drupal/geolocation": "1.10",
diff --git a/composer.lock b/composer.lock
index 7b0303c87c111c658bac9f074e7f8b0931305b08..60170e05e88d58e92f483bf54f15c0ca4d7007d6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4712,17 +4712,17 @@
         },
         {
             "name": "drupal/field_permissions",
-            "version": "1.0.0-beta1",
+            "version": "1.0.0-rc2",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/field_permissions.git",
-                "reference": "8.x-1.0-beta1"
+                "reference": "8.x-1.0-rc2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/field_permissions-8.x-1.0-beta1.zip",
-                "reference": "8.x-1.0-beta1",
-                "shasum": "f9d7c39734c01e52412de95a671992ec781d6652"
+                "url": "https://ftp.drupal.org/files/projects/field_permissions-8.x-1.0-rc2.zip",
+                "reference": "8.x-1.0-rc2",
+                "shasum": "bbc0d4215b24f2613a02a365a22f2039ebcea421"
             },
             "require": {
                 "drupal/core": "~8.0"
@@ -4733,11 +4733,11 @@
                     "dev-1.x": "1.x-dev"
                 },
                 "drupal": {
-                    "version": "8.x-1.0-beta1",
-                    "datestamp": "1495836183",
+                    "version": "8.x-1.0-rc2",
+                    "datestamp": "1545332280",
                     "security-coverage": {
                         "status": "not-covered",
-                        "message": "Beta releases are not covered by Drupal security advisories."
+                        "message": "RC releases are not covered by Drupal security advisories."
                     }
                 }
             },
@@ -4766,7 +4766,7 @@
             "description": "The Field Permissions module allows site administrators to set field-level permissions to edit, view and create fields on any entity.",
             "homepage": "https://www.drupal.org/project/field_permissions",
             "support": {
-                "source": "http://cgit.drupalcode.org/field_permissions",
+                "source": "https://git.drupalcode.org/project/field_permissions",
                 "issues": "https://www.drupal.org/project/issues/field_permissions"
             }
         },
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index a27afb929d9b6f2096778eb0301581c07306d07c..cfb3c3a1237bebf2873bf393373f5e8d89e19867 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -4854,18 +4854,18 @@
     },
     {
         "name": "drupal/field_permissions",
-        "version": "1.0.0-beta1",
-        "version_normalized": "1.0.0.0-beta1",
+        "version": "1.0.0-rc2",
+        "version_normalized": "1.0.0.0-RC2",
         "source": {
             "type": "git",
             "url": "https://git.drupalcode.org/project/field_permissions.git",
-            "reference": "8.x-1.0-beta1"
+            "reference": "8.x-1.0-rc2"
         },
         "dist": {
             "type": "zip",
-            "url": "https://ftp.drupal.org/files/projects/field_permissions-8.x-1.0-beta1.zip",
-            "reference": "8.x-1.0-beta1",
-            "shasum": "f9d7c39734c01e52412de95a671992ec781d6652"
+            "url": "https://ftp.drupal.org/files/projects/field_permissions-8.x-1.0-rc2.zip",
+            "reference": "8.x-1.0-rc2",
+            "shasum": "bbc0d4215b24f2613a02a365a22f2039ebcea421"
         },
         "require": {
             "drupal/core": "~8.0"
@@ -4876,11 +4876,11 @@
                 "dev-1.x": "1.x-dev"
             },
             "drupal": {
-                "version": "8.x-1.0-beta1",
-                "datestamp": "1495836183",
+                "version": "8.x-1.0-rc2",
+                "datestamp": "1545332280",
                 "security-coverage": {
                     "status": "not-covered",
-                    "message": "Beta releases are not covered by Drupal security advisories."
+                    "message": "RC releases are not covered by Drupal security advisories."
                 }
             }
         },
@@ -4910,7 +4910,7 @@
         "description": "The Field Permissions module allows site administrators to set field-level permissions to edit, view and create fields on any entity.",
         "homepage": "https://www.drupal.org/project/field_permissions",
         "support": {
-            "source": "http://cgit.drupalcode.org/field_permissions",
+            "source": "https://git.drupalcode.org/project/field_permissions",
             "issues": "https://www.drupal.org/project/issues/field_permissions"
         }
     },
diff --git a/web/modules/field_permissions/CHANGELOG.md b/web/modules/field_permissions/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..9b8783a7e58f24bd70fb55bea4086f8fdeee4117
--- /dev/null
+++ b/web/modules/field_permissions/CHANGELOG.md
@@ -0,0 +1,60 @@
+## 8.x-1.0-beta1
+
+* Remove old 7.x .info file.
+* Convert README to markdown
+* Move README to markdown.
+* [#2768867](/node/2768867) by [jhedstrom](/u/jhedstrom): Utilize the UserCreationTrait
+* [#2765049](/node/2765049) by [jhedstrom](/u/jhedstrom): Add some additional unit tests
+* Add a composer.json file.
+* Removing the LICENSE file
+
+## 8.x-1.0-alpha1
+
+* Coding standards fixes.
+* [#2764479](/node/2764479) by [jhedstrom](/u/jhedstrom): Split admin form methods into separate interface from FieldPermissionTypeInterface
+* [#2764425](/node/2764425) by [jhedstrom](/u/jhedstrom): Cleanup the report logic to make use of plugins
+* [#2764405](/node/2764405) by [jhedstrom](/u/jhedstrom): Add explicit tests for views integration
+* [#2757267](/node/2757267) by [jhedstrom](/u/jhedstrom): Convert the field permissions types to plugins
+* [#2758785](/node/2758785) by [jhedstrom](/u/jhedstrom): Remove underscore in permission names
+* [#2758783](/node/2758783) by [jhedstrom](/u/jhedstrom): Rename some service methods for clarity
+* [#2758139](/node/2758139) by [jhedstrom](/u/jhedstrom): Test the field permission report controller
+* [#2758757](/node/2758757) by [jhedstrom](/u/jhedstrom): Fix the field permissions report page
+* [#2757433](/node/2757433) by [jhedstrom](/u/jhedstrom): Utilize 3rd party settings API instead of config for field permissions
+* [#2758059](/node/2758059) by [jhedstrom](/u/jhedstrom): Move web tests to BrowserTestBase
+* [#2757431](/node/2757431): Move away from static methods in field permission service
+* [#2757299](/node/2757299) by [jhedstrom](/u/jhedstrom): The comment module is currently required
+* [#2756685](/node/2756685) by [jhedstrom](/u/jhedstrom): Test cleanup
+* [#2756593](/node/2756593) by [jhedstrom](/u/jhedstrom): Interface cleanup
+* Some automated cleanup via phpcbf.
+* Remove old admin files
+* Remove 7.x tests
+* Remove redundant constant define statements.
+* Remove old install file
+* Merge branch '8.x-1.x' of https://github.com/drugo32/field_permissions into 8.x-1.x-initial
+* [#1321050](/node/1321050) by [fangel](/u/fangel), [david_rothstein](/u/david_rothstein), [rob-loach-|-thekevinday](/u/rob-loach-|-thekevinday): Additional safe-guard for entities other than nodes when it comes to entity ownership.
+* [#1063960](/node/1063960): Prepare 7.x-1.0-beta1.
+* [#1312596](/node/1312596): Clean up.
+* [#1312596](/node/1312596): Merge settings.css into admin.css and access.inc into .module.
+* [#1312596](/node/1312596) by [rob-loach](/u/rob-loach): Clean up the module structure.
+* [#1307312](/node/1307312) by [rob-loach](/u/rob-loach): Remove troubleshooting interface.
+* [#876550](/node/876550) by [rob-loach](/u/rob-loach): Ignore the Drupal core thrown exception with a TODO to fix the core bug.
+* [#1230284](/node/1230284) by [zhgenti](/u/zhgenti), [david_rothstein-|-dboulet](/u/david_rothstein-|-dboulet): Use form_load_include() instead of module_load_include() to fix form submits.
+* [#1298966](/node/1298966) by [david_rothstein](/u/david_rothstein): Passing tests.
+* [#1308210](/node/1308210) by [david_rothstein](/u/david_rothstein): Update the README.txt for the new user interface.
+* [#1114134](/node/1114134) by [geerlingguy](/u/geerlingguy), [joelstein](/u/joelstein): Added Remove dependency on Fields UI.
+* [#876550](/node/876550) by [sebcorbin](/u/sebcorbin), [david_rothstein-|-abbasmousavi](/u/david_rothstein-|-abbasmousavi): Fix for objects other than nodes.
+* [#1306780](/node/1306780) by [david_rothstein](/u/david_rothstein): Private fields should allow administrators view access.
+* [#1298966](/node/1298966) by [gabor-hojtsy](/u/gabor-hojtsy): Initial tests.
+* [#1279712](/node/1279712) and [#1141330](/node/1141330) by [david_rothstein](/u/david_rothstein), [jeff-noyes](/u/jeff-noyes), [stellina-mckinney](/u/stellina-mckinney), [gabor-hojtsy](/u/gabor-hojtsy): Revamp Field Permissions UI.
+* [#1073284](/node/1073284) by [joelstein](/u/joelstein), [rob-loach](/u/rob-loach): Assign administrator role permissions when new field permissions are opened.
+* [#1063960](/node/1063960): Prepare for 7.x-1.0-alpha1.
+* [#1043522](/node/1043522) by [erikwebb](/u/erikwebb): Permissions administration link wrong on Edit Field page.
+* [#1063162](/node/1063162) by [jide](/u/jide), [rob-loach](/u/rob-loach): Field Permissions not accessible for some fields.
+* [#965110](/node/965110) by [danic](/u/danic): Move Field Permissions UI to Reports.
+* [#965094](/node/965094) by [danic](/u/danic), [rob-loach](/u/rob-loach): Group Title and Description in modules page.
+* Stripping CVS keywords
+* Fix node revisions table name.
+* Sync code base from 6.x-1.0 release.
+* Added support for create field permission. - Every permission type can be enabled independently. - Warning: This branch does not work yet!
+* Initial port to D7.
+* Initial checkin for the Field Permissions module.
diff --git a/web/modules/field_permissions/CHANGELOG.txt b/web/modules/field_permissions/CHANGELOG.txt
deleted file mode 100644
index bfac63bdc237c2597dc9f5fe097335001259dfb7..0000000000000000000000000000000000000000
--- a/web/modules/field_permissions/CHANGELOG.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-7.x-1.0-beta1
-==============
-- #1312596 by Rob Loach: Clean up the module file structure.
-- #1307312 by Rob Loach: Remove troubleshooting interface as we now have tests.
-- #1230284 by zhgenti, David_Rothstein | dboulet: Use form_load_include()
-    instead of module_load_include() to fix form submits.
-- #1306780 by David_Rothstein: Private fields should allow administrators view
-    access.
-- #1298966 by David_Rothstein: Fix static caching in tests.
-- #1298966 by Gabor Hojtsy: Initial tests.
-- #1279712 by David_Rothstein, Jeff Noyes, Stellina McKinney, Gabor Hojtsy:
-    Revamp Field Permissions user interface to make it more intuitive.
-- #1141330 by David_Rothstein: Fix Field Permissions support with Views.
-- #1073284 by joelstein, Rob Loach: Administrator permissions for new fields.
-
-
-7.x-1.0-alpha1
-==============
-- #1063162 by jide, Rob Loach: Field Permissions not accessible for some fields.
-- #965110 by Danic: Move Field Permissions UI to Reports.
-- #965094 by Danic, Rob Loach: Group Title and Description in modules page.
-- #1043522 by erikwebb: Permissions administration link wrong on Edit Field page.
-- Small documentation changes.
-- Added support for create field permission.
-- Every permission type can be enabled independently.
-- Sync code base from 6.x-1.0 release.
-- Fix node revisions table name.
diff --git a/web/modules/field_permissions/README.md b/web/modules/field_permissions/README.md
index 33fb1b25289da0b21f204e77e3f498691a007691..f2bbbc1472cd02fdcf9e2e758a1dc23ffa2e5718 100644
--- a/web/modules/field_permissions/README.md
+++ b/web/modules/field_permissions/README.md
@@ -33,7 +33,7 @@ Once Field Permissions module is installed, you need to edit the field settings
 form to enable permissions for each field where you need this feature. You can
 choose from three options:
 
-  * Public (author and administrators can edit, everyone can view)
+  * Not set (Field inherits content permissions.)
   * Private (only author and administrators can edit and view)
   * Custom permissions
 
diff --git a/web/modules/field_permissions/field_permissions.api.php b/web/modules/field_permissions/field_permissions.api.php
new file mode 100644
index 0000000000000000000000000000000000000000..3da27078d674e4fa8c5deeaee69bf992f12c5c16
--- /dev/null
+++ b/web/modules/field_permissions/field_permissions.api.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Hooks for the field_permissions module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Alters discovered field_permission_type plugins.
+ *
+ * @param array $definitions
+ *   Discovered definitions.
+ */
+function hook_field_permission_type_plugin_alter(array &$definitions) {
+  unset($definitions['private']);
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */
diff --git a/web/modules/field_permissions/field_permissions.info.yml b/web/modules/field_permissions/field_permissions.info.yml
index c01f5b088bc6fb4b334d8fa88569512907018e0f..21a91b420cc2a45578b380cd6ca14570cfb34c7e 100644
--- a/web/modules/field_permissions/field_permissions.info.yml
+++ b/web/modules/field_permissions/field_permissions.info.yml
@@ -1,15 +1,12 @@
 name: Field Permissions
 type: module
-hidden: false
 description: 'Set field-level permissions to create, update or view fields.'
 configure: field_permissions.reports
 package: field
-# version: 8.x-1.x-dev
 # core: '8.x'
-# datestamp: 1449315106
 
-# Information added by Drupal.org packaging script on 2016-07-19
-version: '8.x-1.0-beta1'
+# Information added by Drupal.org packaging script on 2018-12-20
+version: '8.x-1.0-rc2'
 core: '8.x'
 project: 'field_permissions'
-datestamp: 1468958040
+datestamp: 1545332284
diff --git a/web/modules/field_permissions/field_permissions.links.menu.yml b/web/modules/field_permissions/field_permissions.links.menu.yml
index 49d051edcfe67c3a1a981680d1cdaa669b08f825..f7abbeb86090a187718c03dbde0fcd4a9bcd6ef5 100644
--- a/web/modules/field_permissions/field_permissions.links.menu.yml
+++ b/web/modules/field_permissions/field_permissions.links.menu.yml
@@ -1,5 +1,5 @@
 field_permissions.reports:
   title: 'Report all field permissions'
-  parent: system.admin_structure
+  parent: system.admin_reports
   description: 'Report all permissions set.'
   route_name: field_permissions.reports
diff --git a/web/modules/field_permissions/field_permissions.module b/web/modules/field_permissions/field_permissions.module
index 728e7d754acfb355c7711da04a71beeaefd19969..036d8c362c896df62585ab9940cdc42b6eaf8cee 100644
--- a/web/modules/field_permissions/field_permissions.module
+++ b/web/modules/field_permissions/field_permissions.module
@@ -5,25 +5,26 @@
  * Contains field_permissions.module.
  */
 
+use Drupal\field\FieldConfigInterface;
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\Core\Session\AccountInterface;
 use Drupal\field_permissions\FieldPermissionsService;
 use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface;
 use Drupal\field_permissions\Plugin\AdminFormSettingsInterface;
 
-
 /**
  * Implements hook_help().
  */
 function field_permissions_help($route_name, RouteMatchInterface $route_match) {
   switch ($route_name) {
     case 'help.page.field_permissions':
-      return '<p>' . t('Set field-level permissions to edit or view fields in any node, edit field during node creation, and edit or view permissions for nodes owned by the current user.') . '</p>';
-
-    default:
+      $output = '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Set field-level permissions to edit or view fields in any entity type (content, users, taxonomy, etc), edit field during entity creation, and edit or view permissions for content owned by the current user.') . '</p>';
+      return $output;
   }
 }
 
@@ -42,6 +43,27 @@ function field_permissions_entity_field_access($operation, FieldDefinitionInterf
   return AccessResult::neutral();
 }
 
+/**
+ * Implements hook_jsonapi_entity_field_filter_access().
+ */
+function field_permissions_jsonapi_entity_field_filter_access(FieldDefinitionInterface $field_definition, AccountInterface $account) {
+  if (!$field_definition->isDisplayConfigurable('display')) {
+    return AccessResult::neutral();
+  }
+
+  /** @var \Drupal\field_permissions\FieldPermissionsServiceInterface $service */
+  $service = \Drupal::service('field_permissions.permissions_service');
+  if ($service instanceof FieldPermissionsService) {
+    $access = $service->hasFieldViewAccessForEveryEntity($account, $field_definition);
+  }
+  else {
+    $permission_type = $service->fieldGetPermissionType($field_definition->getFieldStorageDefinition());
+    $access = ($permission_type == FieldPermissionTypeInterface::ACCESS_PUBLIC);
+  }
+
+  return $access ? AccessResult::neutral() : AccessResult::forbidden();
+}
+
 /**
  * Implements hook_form_FORM_ID_alter().
  *
@@ -64,13 +86,13 @@ function field_permissions_form_field_config_edit_form_alter(&$form, FormStateIn
     '#weight' => -10,
   ];
 
-  // Always add the public option, which isn't implemented as a plugin.
+  // Always add the 'not set' option, which isn't implemented as a plugin.
   $options = [
-    FieldPermissionTypeInterface::ACCESS_PUBLIC => t('Public'),
+    FieldPermissionTypeInterface::ACCESS_PUBLIC => t('Not set'),
   ];
   $descriptions = [
     FieldPermissionTypeInterface::ACCESS_PUBLIC => [
-      '#description' => t('Author and administrators can edit, everyone can view.'),
+      '#description' => t('Field inherits content permissions.'),
     ],
   ];
   $definitions = \Drupal::service('plugin.field_permissions.types.manager')->getDefinitions();
@@ -83,9 +105,10 @@ function field_permissions_form_field_config_edit_form_alter(&$form, FormStateIn
 
   $form['field']['field_permissions']['type'] = [
     '#title' => t('Field visibility and permissions'),
+    '#description' => t('<strong>These permissions apply to all instances of this field.</strong>'),
     '#type' => 'radios',
     '#options' => $options,
-    '#default_value' => $field->getFieldStorageDefinition()->getThirdPartySetting('field_permissions', 'permission_type', FieldPermissionTypeInterface::ACCESS_PUBLIC),
+    '#default_value' => \Drupal::service('field_permissions.permissions_service')->fieldGetPermissionType($field->getFieldStorageDefinition()),
   ];
 
   // Add in the descriptions.
@@ -108,17 +131,19 @@ function field_permissions_form_field_config_edit_form_alter(&$form, FormStateIn
  *
  * @see field_permissions_form_field_config_edit_form_alter
  */
-function field_permissions_field_config_edit_form_builder($entity_type, \Drupal\field\FieldConfigInterface $field, array &$form, FormStateInterface $form_state) {
+function field_permissions_field_config_edit_form_builder($entity_type, FieldConfigInterface $field, array &$form, FormStateInterface $form_state) {
   $storage = $field->getFieldStorageDefinition();
   $storage->setThirdPartySetting('field_permissions', 'permission_type', $form_state->getValue('type'));
   $storage->save();
 }
 
 /**
- * Implements hook_form_submit().
+ * Submit handler for the field configuration form.
+ *
+ * @see field_permissions_form_field_config_edit_form_alter()
  */
 function field_permission_field_config_edit_form_submit(array &$form, FormStateInterface $form_state) {
-  /** @var FieldDefinitionInterface $field */
+  /** @var \Drupal\Core\Field\FieldDefinitionInterface $field */
   $field = $form_state->getFormObject()->getEntity();
 
   // Allow all plugin types to react to the submitted form.
diff --git a/web/modules/field_permissions/field_permissions.services.yml b/web/modules/field_permissions/field_permissions.services.yml
old mode 100644
new mode 100755
diff --git a/web/modules/field_permissions/src/Annotation/FieldPermissionType.php b/web/modules/field_permissions/src/Annotation/FieldPermissionType.php
index 2f9e31d03e128354ceeb541c2eaf9ee8de4d21e1..6c387e80acb62d20a3f8e93626b88d54e92112b2 100644
--- a/web/modules/field_permissions/src/Annotation/FieldPermissionType.php
+++ b/web/modules/field_permissions/src/Annotation/FieldPermissionType.php
@@ -21,18 +21,18 @@ class FieldPermissionType extends Plugin {
   /**
    * The human-readable title.
    *
-   * @ingroup plugin_translatable
-   *
    * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
    */
   public $title;
 
   /**
    * The permission type description.
    *
-   * @ingroup plugin_translatable
-   *
    * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
    */
   public $description;
 
diff --git a/web/modules/field_permissions/src/Controller/FieldPermissionsController.php b/web/modules/field_permissions/src/Controller/FieldPermissionsController.php
index b544f24749c5e1dab578c0e8fc72fcc5dd233163..49239d7456bdb353454bbe814b6aad22a156a17e 100644
--- a/web/modules/field_permissions/src/Controller/FieldPermissionsController.php
+++ b/web/modules/field_permissions/src/Controller/FieldPermissionsController.php
@@ -21,7 +21,7 @@ class FieldPermissionsController extends ControllerBase {
   /**
    * The entity type manager service.
    *
-   * @var EntityTypeManagerInterface
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
    */
   protected $entityTypeManager;
 
@@ -42,7 +42,7 @@ class FieldPermissionsController extends ControllerBase {
   /**
    * Construct the field permission controller.
    *
-   * @param FieldPermissionsServiceInterface $field_permissions_service
+   * @param \Drupal\field_permissions\FieldPermissionsServiceInterface $field_permissions_service
    *   Field permissions services.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
    *   The entity type manager service.
@@ -113,7 +113,7 @@ public function getTitle() {
    * Build table rows.
    */
   protected function buildRows() {
-    /** @var FieldStorageConfigInterface $instances */
+    /** @var \Drupal\field\FieldStorageConfigInterface $instances */
     $instances = $this->entityTypeManager->getStorage('field_storage_config')->loadMultiple();
     $rows = [];
     foreach ($instances as $key => $instance) {
@@ -125,7 +125,7 @@ protected function buildRows() {
   /**
    * Build a single row.
    *
-   * @param FieldStorageConfigInterface $field_storage
+   * @param \Drupal\field\FieldStorageConfigInterface $field_storage
    *   Field to populate row.
    *
    * @return array
@@ -135,7 +135,7 @@ protected function buildRow(FieldStorageConfigInterface $field_storage) {
     $row = [];
     if ($field_storage->isLocked()) {
       $row[0]['class'] = ['menu-disabled'];
-      $row[0]['data']['id'] = $this->t('@field_name (Locked)', ['@field_name' => $field_storage->getName()]);
+      $row[0]['data'] = $this->t('@field_name (Locked)', ['@field_name' => $field_storage->getName()]);
     }
     else {
       $row[0]['data'] = $field_storage->getName();
@@ -147,7 +147,7 @@ protected function buildRow(FieldStorageConfigInterface $field_storage) {
     $default_type = $this->fieldPermissions->fieldGetPermissionType($field_storage);
     $field_permissions = $this->fieldPermissions->getPermissionsByRole();
     if ($default_type === FieldPermissionTypeInterface::ACCESS_PUBLIC) {
-      $row[4]['data'] = $this->t('Public (Author and administrators can edit, everyone can view.)');
+      $row[4]['data'] = $this->t('Not set (Field inherits content permissions.)');
       $row[4]['colspan'] = 5;
     }
     else {
diff --git a/web/modules/field_permissions/src/FieldPermissionsService.php b/web/modules/field_permissions/src/FieldPermissionsService.php
index 2fd7a43bc979ce9accb978d2252c02b2b04adf28..ed06c81a51427c91f90a3786191cc5129f275342 100644
--- a/web/modules/field_permissions/src/FieldPermissionsService.php
+++ b/web/modules/field_permissions/src/FieldPermissionsService.php
@@ -8,6 +8,7 @@
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\field\FieldStorageConfigInterface;
+use Drupal\field_permissions\Plugin\FieldPermissionType\Base;
 use Drupal\field_permissions\Plugin\FieldPermissionType\Manager;
 use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface;
 use Drupal\field_permissions\Plugin\CustomPermissionsInterface;
@@ -83,22 +84,6 @@ public static function getList($field_label = '') {
     ];
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getPermissionList(FieldStorageConfigInterface $field) {
-    $permissions = [];
-    $permission_list = $this->getList($field->getName());
-    foreach ($permission_list as $permission_type => $permission_info) {
-      $permission = $permission_type . ' ' . $field->getName();
-      $permissions[$permission] = [
-        'title' => $permission_info['title'],
-        'description' => $permission_info['label'],
-      ];
-    }
-    return $permissions;
-  }
-
   /**
    * {@inheritdoc}
    */
@@ -132,11 +117,11 @@ public function getPermissionsByRole() {
    */
   public function getAllPermissions() {
     $permissions = [];
-    /** @var FieldStorageConfigInterface[] $fields */
+    /** @var \Drupal\field\FieldStorageConfigInterface[] $fields */
     $fields = $this->entityTypeManager->getStorage('field_storage_config')->loadMultiple();
     foreach ($fields as $key => $field) {
       // Check if this plugin defines custom permissions.
-      $permission_type = static::fieldGetPermissionType($field);
+      $permission_type = $this->fieldGetPermissionType($field);
       if ($permission_type !== FieldPermissionTypeInterface::ACCESS_PUBLIC) {
         $plugin = $this->permissionTypeManager->createInstance($permission_type, [], $field);
         if ($plugin instanceof CustomPermissionsInterface) {
@@ -189,4 +174,44 @@ public function getFieldAccess($operation, FieldItemListInterface $items, Accoun
     return $plugin->hasFieldAccess($operation, $items->getEntity(), $account);
   }
 
+  /**
+   * Determines if the given account may view the field, regardless of entity.
+   *
+   * This should only return TRUE if
+   * @code
+   * $this->getFieldAccess('view', $items, $account, $field_definition);
+   * @endcode
+   * returns TRUE for all possible values of $items.
+   *
+   * @param \Drupal\Core\Session\AccountInterface $account
+   *   Account for which to check access.
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
+   *   Field for which to check access.
+   *
+   * @return bool
+   *   The access result.
+   *
+   * @todo Move this to an interface: either FieldPermissionsServiceInterface
+   *   or a new one.
+   */
+  public function hasFieldViewAccessForEveryEntity(AccountInterface $account, FieldDefinitionInterface $field_definition) {
+    $permission_type = $this->fieldGetPermissionType($field_definition->getFieldStorageDefinition());
+    if (in_array('administrator', $account->getRoles()) || $permission_type == FieldPermissionTypeInterface::ACCESS_PUBLIC) {
+      return TRUE;
+    }
+    // Field add to comment entity.
+    if (static::isCommentField($field_definition)) {
+      return TRUE;
+    }
+
+    // Pass access control to the plugin.
+    $plugin = $this->permissionTypeManager->createInstance($permission_type, [], $field_definition->getFieldStorageDefinition());
+    if ($plugin instanceof Base) {
+      return $plugin->hasFieldViewAccessForEveryEntity($account);
+    }
+    else {
+      return FALSE;
+    }
+  }
+
 }
diff --git a/web/modules/field_permissions/src/FieldPermissionsServiceInterface.php b/web/modules/field_permissions/src/FieldPermissionsServiceInterface.php
index de9c1dc8cba02e5f68fdd9502fe079792e51a6e7..d6bb265a11e222465d7c04d4e3199eda42f2ba5e 100644
--- a/web/modules/field_permissions/src/FieldPermissionsServiceInterface.php
+++ b/web/modules/field_permissions/src/FieldPermissionsServiceInterface.php
@@ -28,26 +28,18 @@ interface FieldPermissionsServiceInterface {
    *   plugin. However, since it is used in the report page, it would be
    *   difficult to abstract down to the plugin level the way the report
    *   currently works.
-   */
-  public static function getList($field_label = '');
-
-  /**
-   * Returns permissions for a given field.
    *
-   * @param \Drupal\field\FieldStorageConfigInterface $field
-   *   The field to return permissions for.
-   *
-   * @return array
-   *   An array of permissions for a given field, keyed by the permission
-   *   machine name.
+   * @deprecated This function will be removed before 8.x-1.0
    */
-  public function getPermissionList(FieldStorageConfigInterface $field);
+  public static function getList($field_label = '');
 
   /**
    * Get all field permissions keyed by role ID.
    *
    * @return array
    *   An array of permission information keyed by role ID.
+   *
+   * @deprecated This function will be removed before 8.x-1.0
    */
   public function getPermissionsByRole();
 
@@ -59,6 +51,8 @@ public function getPermissionsByRole();
    * @return array
    *   An array of all permissions for all fields that implement the custom
    *   permission type.
+   *
+   * @deprecated This function will be removed before 8.x-1.0
    */
   public function getAllPermissions();
 
@@ -73,7 +67,7 @@ public function fieldGetPermissionType(FieldStorageConfigInterface $field);
   /**
    * Field is attached to comment entity.
    *
-   * @param FieldDefinitionInterface $field_definition
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
    *   Fields to get permissions.
    *
    * @return bool
@@ -85,12 +79,12 @@ public static function isCommentField(FieldDefinitionInterface $field_definition
    * Get access for field by operations and account permisisons.
    *
    * @param string $operation
-   *    String operation on field.
-   * @param FieldItemListInterface $items
+   *   String operation on field.
+   * @param \Drupal\Core\Field\FieldItemListInterface $items
    *   The entity field object on which to check access.
-   * @param AccountInterface $account
-   *    Account to get permissions.
-   * @param FieldDefinitionInterface $field_definition
+   * @param \Drupal\Core\Session\AccountInterface $account
+   *   Account to get permissions.
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
    *   Fields to get permissions.
    */
   public function getFieldAccess($operation, FieldItemListInterface $items, AccountInterface $account, FieldDefinitionInterface $field_definition);
diff --git a/web/modules/field_permissions/src/Plugin/FieldPermissionType/Base.php b/web/modules/field_permissions/src/Plugin/FieldPermissionType/Base.php
index 82ad418b25640af8a30964c294350f2b04aec0fe..5989427c720cd4db3cfedb7d8c16737722dc7423 100644
--- a/web/modules/field_permissions/src/Plugin/FieldPermissionType/Base.php
+++ b/web/modules/field_permissions/src/Plugin/FieldPermissionType/Base.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Plugin\PluginBase;
+use Drupal\Core\Session\AccountInterface;
 use Drupal\field\FieldStorageConfigInterface;
 use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -16,14 +17,20 @@ abstract class Base extends PluginBase implements FieldPermissionTypeInterface,
   /**
    * The field storage.
    *
-   * @var FieldStorageConfigInterface
+   * @var \Drupal\field\FieldStorageConfigInterface
    */
   protected $fieldStorage;
 
   /**
-   * {@inheritdoc}
+   * Constructs the plugin.
    *
-   * @param FieldStorageConfigInterface $field_storage
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\field\FieldStorageConfigInterface $field_storage
    *   The field storage.
    */
   public function __construct(array $configuration, $plugin_id, $plugin_definition, FieldStorageConfigInterface $field_storage) {
@@ -57,4 +64,25 @@ public function getDescription() {
     return $this->pluginDefinition['description'];
   }
 
+  /**
+   * Determines if the given account may view the field, regardless of entity.
+   *
+   * This should only return TRUE if
+   * @code
+   * $this->hasFieldAccess('view', $entity, $account);
+   * @endcode
+   * returns TRUE for all possible $entity values.
+   *
+   * @param \Drupal\Core\Session\AccountInterface $account
+   *   The user to check access for.
+   *
+   * @return bool
+   *   The access result.
+   *
+   * @todo Move this to an interface: either FieldPermissionTypeInterface or a
+   *   new one.
+   */
+  public function hasFieldViewAccessForEveryEntity(AccountInterface $account) {
+    return FALSE;
+  }
 }
diff --git a/web/modules/field_permissions/src/Plugin/FieldPermissionType/CustomAccess.php b/web/modules/field_permissions/src/Plugin/FieldPermissionType/CustomAccess.php
index eb6e39965c699713285a82b29be8a0b063c38f56..239f5e3270fc77f276ab7796f073d549060a1343 100644
--- a/web/modules/field_permissions/src/Plugin/FieldPermissionType/CustomAccess.php
+++ b/web/modules/field_permissions/src/Plugin/FieldPermissionType/CustomAccess.php
@@ -28,7 +28,7 @@ class CustomAccess extends Base implements CustomPermissionsInterface, AdminForm
    * {@inheritdoc}
    */
   public function hasFieldAccess($operation, EntityInterface $entity, AccountInterface $account) {
-    assert('in_array($operation, ["edit", "view"])', 'The operation is either "edit" or "view", "' . $operation . '" given instead.');
+    assert(in_array($operation, ["edit", "view"]), 'The operation is either "edit" or "view", "' . $operation . '" given instead.');
 
     $field_name = $this->fieldStorage->getName();
     if ($operation === 'edit' && $entity->isNew()) {
@@ -52,6 +52,14 @@ public function hasFieldAccess($operation, EntityInterface $entity, AccountInter
     return FALSE;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function hasFieldViewAccessForEveryEntity(AccountInterface $account) {
+    $field_name = $this->fieldStorage->getName();
+    return $account->hasPermission('view ' . $field_name);
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -128,9 +136,9 @@ protected function addPermissionsGrid(array &$form, FormStateInterface $form_sta
       '#attributes' => ['class' => ['permissions', 'js-permissions']],
       '#sticky' => TRUE,
     ];
-    foreach (array_keys($roles) as $name) {
+    foreach ($roles as $role) {
       $form['permissions']['#header'][] = [
-        'data' => $name,
+        'data' => $role->label(),
         'class' => ['checkbox'],
       ];
     }
diff --git a/web/modules/field_permissions/src/Plugin/FieldPermissionType/Manager.php b/web/modules/field_permissions/src/Plugin/FieldPermissionType/Manager.php
index a528d7f4ff09fc874be368fb0449ee8a7e014933..91b437f22dea00bb6b9ec0aa44430faa5877d085 100644
--- a/web/modules/field_permissions/src/Plugin/FieldPermissionType/Manager.php
+++ b/web/modules/field_permissions/src/Plugin/FieldPermissionType/Manager.php
@@ -8,6 +8,8 @@
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
 use Drupal\field\FieldStorageConfigInterface;
+use Drupal\field_permissions\Annotation\FieldPermissionType;
+use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface;
 
 /**
  * Field permission type plugin manager.
@@ -26,20 +28,25 @@ class Manager extends DefaultPluginManager {
    *   The module handler to invoke the alter hook with.
    */
   public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
-    parent::__construct('Plugin/FieldPermissionType', $namespaces, $module_handler, 'Drupal\field_permissions\Plugin\FieldPermissionTypeInterface', 'Drupal\field_permissions\Annotation\FieldPermissionType');
+    parent::__construct('Plugin/FieldPermissionType', $namespaces, $module_handler, FieldPermissionTypeInterface::class, FieldPermissionType::class);
     $this->setCacheBackend($cache_backend, 'field_permission_type_plugins');
+    $this->alterInfo('field_permission_type_plugin');
   }
 
   /**
-   * {@inheritdoc}
-   *
    * Allow the field storage to be passed into the plugin.
    *
+   * @param string $plugin_id
+   *   The plugin ID.
+   * @param array $configuration
+   *   The plugin configuration.
    * @param \Drupal\field\FieldStorageConfigInterface $field_storage
    *   The field storage.
    *
    * @return \Drupal\field_permissions\Plugin\FieldPermissionTypeInterface
    *   The field permission type plugin instance.
+   *
+   * @throws \Drupal\Component\Plugin\Exception\PluginException
    */
   public function createInstance($plugin_id, array $configuration = [], FieldStorageConfigInterface $field_storage = NULL) {
     $plugin_definition = $this->getDefinition($plugin_id);
diff --git a/web/modules/field_permissions/src/Plugin/FieldPermissionType/PrivateAccess.php b/web/modules/field_permissions/src/Plugin/FieldPermissionType/PrivateAccess.php
index 3b4dc03ae6371e0bb853e9765e7db605a862be84..4a8357312b7330aba8b66ca543591c1e6d76154f 100644
--- a/web/modules/field_permissions/src/Plugin/FieldPermissionType/PrivateAccess.php
+++ b/web/modules/field_permissions/src/Plugin/FieldPermissionType/PrivateAccess.php
@@ -43,4 +43,11 @@ public function hasFieldAccess($operation, EntityInterface $entity, AccountInter
     return TRUE;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function hasFieldViewAccessForEveryEntity(AccountInterface $account) {
+    return $account->hasPermission('access private fields');
+  }
+
 }
diff --git a/web/modules/field_permissions/src/Plugin/FieldPermissionTypeInterface.php b/web/modules/field_permissions/src/Plugin/FieldPermissionTypeInterface.php
index b89445e2751f4e7ecbc180f7c3d85398d3eae3d3..76d7a9cb732e3d576fca99eb1a4faef8ca4d6aee 100644
--- a/web/modules/field_permissions/src/Plugin/FieldPermissionTypeInterface.php
+++ b/web/modules/field_permissions/src/Plugin/FieldPermissionTypeInterface.php
@@ -13,7 +13,7 @@
 interface FieldPermissionTypeInterface extends PluginInspectionInterface, DerivativeInspectionInterface {
 
   /**
-   * Indicates that a field does not have any access control.
+   * Indicates that a field does not have field-specific access control.
    *
    * Public field access is not implemented as a plugin because it effectively
    * means this module does not process any access control for fields with this
diff --git a/web/modules/field_permissions/src/Plugin/migrate/process/FieldPermissionSettings.php b/web/modules/field_permissions/src/Plugin/migrate/process/FieldPermissionSettings.php
new file mode 100644
index 0000000000000000000000000000000000000000..b322a9a7391e31a9a5309945e186ae0d45cce945
--- /dev/null
+++ b/web/modules/field_permissions/src/Plugin/migrate/process/FieldPermissionSettings.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Drupal\field_permissions\Plugin\migrate\process;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface;
+
+/**
+ * Migration plugin for field permission settings.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "d7_field_permission_settings"
+ * )
+ */
+class FieldPermissionSettings extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    $value = $row->getSourceProperty('field_permissions');
+    switch ($value['type']) {
+      case 0:
+        $permission_type = FieldPermissionTypeInterface::ACCESS_PUBLIC;
+        break;
+
+      case 1:
+        $permission_type = FieldPermissionTypeInterface::ACCESS_PRIVATE;
+        break;
+
+      case 2:
+        $permission_type = FieldPermissionTypeInterface::ACCESS_CUSTOM;
+        break;
+    }
+    return ['field_permissions' => ['permission_type' => $permission_type]];
+  }
+
+}
diff --git a/web/modules/field_permissions/tests/modules/field_permissions_test/field_permissions_test.info.yml b/web/modules/field_permissions/tests/modules/field_permissions_test/field_permissions_test.info.yml
index ae0bcbfba68468f769a9d1130c20104939505be0..42585e101d9ef07f6ca60131163d61d1bbe583d6 100644
--- a/web/modules/field_permissions/tests/modules/field_permissions_test/field_permissions_test.info.yml
+++ b/web/modules/field_permissions/tests/modules/field_permissions_test/field_permissions_test.info.yml
@@ -4,10 +4,10 @@ description: 'Provides a test field permission plugin type.'
 package: Testing
 # core: '8.x'
 dependencies:
-  - field_permissions
+  - field_permissions:field_permissions
 
-# Information added by Drupal.org packaging script on 2016-07-19
-version: '8.x-1.0-beta1'
+# Information added by Drupal.org packaging script on 2018-12-20
+version: '8.x-1.0-rc2'
 core: '8.x'
 project: 'field_permissions'
-datestamp: 1468958040
+datestamp: 1545332284
diff --git a/web/modules/field_permissions/tests/modules/field_permissions_test/src/Plugin/FieldPermissionType/TestAccess.php b/web/modules/field_permissions/tests/modules/field_permissions_test/src/Plugin/FieldPermissionType/TestAccess.php
index 27bc3d3fbd3abe994585f92fe4414395f4c285cc..f91c8952731c65a4641e6442f237cb15f5233b92 100644
--- a/web/modules/field_permissions/tests/modules/field_permissions_test/src/Plugin/FieldPermissionType/TestAccess.php
+++ b/web/modules/field_permissions/tests/modules/field_permissions_test/src/Plugin/FieldPermissionType/TestAccess.php
@@ -13,7 +13,7 @@
  * @FieldPermissionType(
  *   id = "test_access",
  *   title = "Test type",
- *   description = "Denies access if the field name starts with 'test_' and this is an edit operation.",
+ *   description = "Denies access with 'test_' and this is an edit operation.",
  *   weight = 42
  * )
  */
@@ -29,6 +29,13 @@ public function hasFieldAccess($operation, EntityInterface $entity, AccountInter
     return strpos($this->fieldStorage->getName(), 'test_') === FALSE;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function hasFieldViewAccessForEveryEntity(AccountInterface $account) {
+    return $account->hasPermission('foo access');
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/web/modules/field_permissions/tests/src/Functional/FieldPermissionsCommentTest.php b/web/modules/field_permissions/tests/src/Functional/FieldPermissionsCommentTest.php
index e67df06f48946fc22046b011ae0796fe58c369fa..a09f197a2ac1251c5f82689a1ef507a5f5ce815b 100644
--- a/web/modules/field_permissions/tests/src/Functional/FieldPermissionsCommentTest.php
+++ b/web/modules/field_permissions/tests/src/Functional/FieldPermissionsCommentTest.php
@@ -71,7 +71,7 @@ public function testFieldPermissionComment() {
    * Configure a comment field on the article node type.
    */
   protected function addCommentField() {
-    $entity_manager = \Drupal::entityManager();
+    $entity_manager = \Drupal::entityTypeManager();
     $bundle = 'article';
     $comment_type_storage = $entity_manager->getStorage('comment_type');
 
@@ -86,8 +86,6 @@ protected function addCommentField() {
       'description' => 'Default comment field',
     ])->save();
 
-    $comment_type = $comment_type_storage->load($comment_type_id);
-
     $entity_manager->getStorage('field_storage_config')->create([
       'entity_type' => $entity_type,
       'field_name' => $field_name,
diff --git a/web/modules/field_permissions/tests/src/Functional/FieldPermissionsNodeTest.php b/web/modules/field_permissions/tests/src/Functional/FieldPermissionsNodeTest.php
index 3f911835bfa3461a6451949c2c2bb2002c8fcc29..aa2b6416ac2e6368966de9d4eb4820d443d9a09c 100644
--- a/web/modules/field_permissions/tests/src/Functional/FieldPermissionsNodeTest.php
+++ b/web/modules/field_permissions/tests/src/Functional/FieldPermissionsNodeTest.php
@@ -50,7 +50,7 @@ public function testNodeFieldPermissions() {
    *
    * @todo Directly set the field permissions rather than using the UI.
    */
-  protected function setNodeFieldPermissions($perm, $custom_permission = []) {
+  protected function setNodeFieldPermissions($perm, array $custom_permission = []) {
     $current_user = $this->loggedInUser;
     $this->drupalLogin($this->adminUser);
     $this->drupalGet('admin/structure/types/manage/article/fields/node.article.body');
diff --git a/web/modules/field_permissions/tests/src/Functional/FieldReportTest.php b/web/modules/field_permissions/tests/src/Functional/FieldReportTest.php
index f2a5ad45cd42f1ae76ad4de2bbfa01ee289c0445..5b4a88552599af0104ddc27eeb9c57c53be6f4d5 100644
--- a/web/modules/field_permissions/tests/src/Functional/FieldReportTest.php
+++ b/web/modules/field_permissions/tests/src/Functional/FieldReportTest.php
@@ -70,7 +70,7 @@ public function testReportPage() {
     $this->assertSession()->statusCodeEquals(200);
 
     // Initially, no fields should be private or custom.
-    $this->assertSession()->pageTextContains('Public (Author and administrators can edit, everyone can view.)');
+    $this->assertSession()->pageTextContains('Not set (Field inherits content permissions.)');
     $this->assertSession()->pageTextNotContains('Private (Only author and administrators can edit and view.)');
     $this->assertSession()->pageTextNotContains('Not all users have this permission');
     $this->assertSession()->pageTextNotContains('All users have this permission');
@@ -91,7 +91,7 @@ public function testReportPage() {
 
     // Grant anonymous and authenticated view permission.
     foreach ([RoleInterface::ANONYMOUS_ID, RoleInterface::AUTHENTICATED_ID] as $role_id) {
-      /** @var RoleInterface $role */
+      /** @var \Drupal\user\RoleInterface $role */
       $role = $this->container->get('entity_type.manager')
         ->getStorage('user_role')
         ->load($role_id);
diff --git a/web/modules/field_permissions/tests/src/Kernel/ViewsFieldAccessTest.php b/web/modules/field_permissions/tests/src/Kernel/ViewsFieldAccessTest.php
index 352189ad810af84a7ca31a2a0605ef1a2dc6aa19..d503c34edfc489c246bff9a9a6d3e4f2bbb0411c 100644
--- a/web/modules/field_permissions/tests/src/Kernel/ViewsFieldAccessTest.php
+++ b/web/modules/field_permissions/tests/src/Kernel/ViewsFieldAccessTest.php
@@ -81,7 +81,7 @@ class ViewsFieldAccessTest extends ViewsKernelTestBase {
   /**
    * An entity to test with.
    *
-   * @var EntityTest
+   * @var \Drupal\entity_test\Entity\EntityTest
    */
   protected $entity;
 
diff --git a/web/modules/field_permissions/tests/src/Unit/FieldPermissionsServiceTest.php b/web/modules/field_permissions/tests/src/Unit/FieldPermissionsServiceTest.php
index 3634a79b4f02af7e322f0915761388feeafc0515..ccab25ae8efd0cbf84610e9db739ee5d5ab75a03 100644
--- a/web/modules/field_permissions/tests/src/Unit/FieldPermissionsServiceTest.php
+++ b/web/modules/field_permissions/tests/src/Unit/FieldPermissionsServiceTest.php
@@ -86,7 +86,13 @@ public function providerTestGetFieldAccess() {
     $storage = $this->prophesize(FieldStorageConfigInterface::class);
     $storage->getThirdPartySetting('field_permissions', 'permission_type', FieldPermissionTypeInterface::ACCESS_PUBLIC)->willReturn('foo');
     $field_definition->getFieldStorageDefinition()->willReturn($storage->reveal());
-    $cases[] = ['view', $field_item_list, $account->reveal(), $field_definition->reveal(), TRUE];
+    $cases[] = [
+      'view',
+      $field_item_list,
+      $account->reveal(),
+      $field_definition->reveal(),
+      TRUE,
+    ];
 
     // No admin roles, but public access.
     $account = $this->prophesize(AccountInterface::class);
@@ -95,9 +101,13 @@ public function providerTestGetFieldAccess() {
     $storage = $this->prophesize(FieldStorageConfigInterface::class);
     $storage->getThirdPartySetting('field_permissions', 'permission_type', FieldPermissionTypeInterface::ACCESS_PUBLIC)->willReturn(FieldPermissionTypeInterface::ACCESS_PUBLIC);
     $field_definition->getFieldStorageDefinition()->willReturn($storage->reveal());
-    $cases[] = ['view', $field_item_list, $account->reveal(), $field_definition->reveal(), TRUE];
-
-    // @todo More complex cases.
+    $cases[] = [
+      'view',
+      $field_item_list,
+      $account->reveal(),
+      $field_definition->reveal(),
+      TRUE,
+    ];
 
     return $cases;
   }
diff --git a/web/modules/field_permissions/tests/src/Unit/Plugin/FieldPermissionType/CustomAccessTest.php b/web/modules/field_permissions/tests/src/Unit/Plugin/FieldPermissionType/CustomAccessTest.php
index 029a6f60f3a91df309cb9fb4fdd159140e0fd9fe..ee4feeafbfaa49e7d71c39fc14a00ab179f5d35b 100644
--- a/web/modules/field_permissions/tests/src/Unit/Plugin/FieldPermissionType/CustomAccessTest.php
+++ b/web/modules/field_permissions/tests/src/Unit/Plugin/FieldPermissionType/CustomAccessTest.php
@@ -53,14 +53,12 @@ public function testHasFieldAccess($operation, EntityInterface $entity, AccountI
    * Test an invalid operation.
    *
    * @covers ::hasFieldAccess
-   *
-   * @expectedException \AssertionError
-   * @expectedExceptionMessage The operation is either "edit" or "view", "bad operation" given instead.
    */
   public function testInvalidOperation() {
     // Edit|view access allowed.
     $account = $this->prophesize(AccountInterface::class);
     $entity = $this->prophesize(EntityInterface::class);
+    $this->setExpectedException(\AssertionError::class, 'The operation is either "edit" or "view", "bad operation" given instead.');
     $this->plugin->hasFieldAccess('bad operation', $entity->reveal(), $account->reveal());
   }