Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / media / tests / modules / media_test_oembed / src / ProviderRepository.php
diff --git a/web/core/modules/media/tests/modules/media_test_oembed/src/ProviderRepository.php b/web/core/modules/media/tests/modules/media_test_oembed/src/ProviderRepository.php
new file mode 100644 (file)
index 0000000..dc4cb8c
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+namespace Drupal\media_test_oembed;
+
+use Drupal\media\OEmbed\Provider;
+use Drupal\media\OEmbed\ProviderRepository as BaseProviderRepository;
+
+/**
+ * Overrides the oEmbed provider repository service for testing purposes.
+ *
+ * This service does not use caching at all, and will always try to retrieve
+ * provider data from state before calling the parent methods.
+ */
+class ProviderRepository extends BaseProviderRepository {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function cacheGet($cid) {
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getAll() {
+    return \Drupal::state()->get(static::class) ?: parent::getAll();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get($provider_name) {
+    $providers = \Drupal::state()->get(static::class, []);
+
+    if (isset($providers[$provider_name])) {
+      return $providers[$provider_name];
+    }
+    return parent::get($provider_name);
+  }
+
+  /**
+   * Stores an oEmbed provider value object in state.
+   *
+   * @param \Drupal\media\OEmbed\Provider $provider
+   *   The provider to store.
+   */
+  public function setProvider(Provider $provider) {
+    $providers = \Drupal::state()->get(static::class, []);
+    $name = $provider->getName();
+    $providers[$name] = $provider;
+    \Drupal::state()->set(static::class, $providers);
+  }
+
+}