diff --git a/core/modules/views/src/Plugin/Block/ViewsBlock.php b/core/modules/views/src/Plugin/Block/ViewsBlock.php
index 1e25133..9074feb 100644
--- a/core/modules/views/src/Plugin/Block/ViewsBlock.php
+++ b/core/modules/views/src/Plugin/Block/ViewsBlock.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\views\Plugin\Block;
 
-use Drupal\Core\Config\Entity\Query\Query;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Form\FormStateInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Entity\EntityInterface;
 
 /**
  * Provides a generic Views block.
@@ -29,7 +29,25 @@ class ViewsBlock extends ViewsBlockBase {
   public function build() {
     $this->view->display_handler->preBlockBuild($this);
 
-    if ($output = $this->view->buildRenderable($this->displayID)) {
+    $this->view->display_handler->getOption('arguments');
+
+    $args = array();
+    if ($this->context) {
+      foreach ($this->view->display_handler->getOption('arguments') as $argument_name => $argument) {
+        if (isset($this->context[$argument_name])) {
+          $value = $this->context[$argument_name]->getContextValue();
+          if ($value instanceof EntityInterface) {
+            $value = $value->id();
+          }
+          $args[] = $value;
+        }
+        else {
+          $args[] = $argument['exception']['value'];
+        }
+      }
+    }
+
+    if ($output = $this->view->buildRenderable($this->displayID, $args)) {
       // Override the label to the dynamic title configured in the view.
       if (empty($this->configuration['views_label']) && $this->view->getTitle()) {
         $output['#title'] = Xss::filterAdmin($this->view->getTitle());
@@ -114,4 +132,23 @@ public function getMachineNameSuggestion() {
     return 'views_block__' . $this->view->storage->id() . '_' . $this->view->current_display;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheKeys() {
+    // Add values of provided context to the cache keys.
+    $cache_keys = parent::getCacheKeys();
+    if (!empty($this->pluginDefinition['context'])) {
+      foreach ($this->pluginDefinition['context'] as $name => $definition) {
+        if (isset($this->context[$name])) {
+          $value = $this->context[$name]->getContextValue();
+          if ($value instanceof EntityInterface) {
+            $value = $value->id();
+          }
+          $cache_keys[] = $name . ':' . $value;
+        }
+      }
+    }
+    return $cache_keys;
+  }
 }
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsBlock.php b/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
index 3ebfc5f..134e269 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
@@ -8,6 +8,7 @@
 namespace Drupal\views\Plugin\Derivative;
 
 use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -105,9 +106,27 @@ public function getDerivativeDefinitions($base_plugin_definition) {
             'config_dependencies' => array(
               'config' => array(
                 $view->getConfigDependencyName(),
-              )
-            )
+              ),
+            ),
           );
+
+          // Look for arguments and expose them as context.
+          if ($arguments = $display->getOption('arguments')) {
+            foreach ($arguments as $argument_name => $argument) {
+              if (!empty($argument['specify_validation'])) {
+                if (strpos($argument['validate']['type'], 'entity:') !== FALSE) {
+                  $this->derivatives[$delta]['context'][$argument_name] = new ContextDefinition($argument['validate']['type'], $argument_name, FALSE);
+                }
+              }
+              else {
+                switch ($argument['plugin_id']) {
+                  case 'numeric':
+                    $this->derivatives[$delta]['context'][$argument_name] = new ContextDefinition('integer', $argument_name, FALSE);
+                }
+              }
+            }
+          }
+
           $this->derivatives[$delta] += $base_plugin_definition;
         }
       }
