// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef Modulator_h
#define Modulator_h

#include "core/CoreExport.h"
#include "platform/heap/Handle.h"
#include "platform/loader/fetch/AccessControlStatus.h"
#include "platform/weborigin/KURL.h"
#include "platform/weborigin/ReferrerPolicy.h"
#include "wtf/text/WTFString.h"

namespace blink {

class LocalFrame;
class ModuleScript;
class ModuleScriptFetchRequest;
class ModuleScriptLoaderClient;
class ScriptModule;
class ScriptModuleResolver;
class SecurityOrigin;
class WebTaskRunner;

// A SingleModuleClient is notified when single module script node (node as in a
// module tree graph) load is complete and its corresponding entry is created in
// module map.
class SingleModuleClient : public GarbageCollectedMixin {
 public:
  virtual void notifyModuleLoadFinished(ModuleScript*) = 0;
};

// spec: "top-level module fetch flag"
// https://html.spec.whatwg.org/multipage/webappapis.html#fetching-scripts-is-top-level
enum class ModuleGraphLevel { TopLevelModuleFetch, DependentModuleFetch };

// A Modulator is an interface for "environment settings object" concept for
// module scripts.
// https://html.spec.whatwg.org/#environment-settings-object
//
// A Modulator also serves as an entry point for various module spec algorithms.
class CORE_EXPORT Modulator : public GarbageCollectedFinalized<Modulator> {
 public:
  static Modulator* from(LocalFrame*);
  virtual ~Modulator();

  DEFINE_INLINE_VIRTUAL_TRACE() {}

  virtual ScriptModuleResolver* scriptModuleResolver() = 0;
  virtual WebTaskRunner* taskRunner() = 0;
  virtual ReferrerPolicy referrerPolicy() = 0;
  virtual SecurityOrigin* securityOrigin() = 0;

  // https://html.spec.whatwg.org/#resolve-a-module-specifier
  static KURL resolveModuleSpecifier(const String& moduleRequest,
                                     const KURL& baseURL);

  virtual ScriptModule compileModule(const String& script,
                                     const String& urlStr,
                                     AccessControlStatus) = 0;

 private:
  friend class ModuleMap;

  // Fetches a single module script.
  // This is triggered from fetchSingle() implementation (which is in ModuleMap)
  // if the cached entry doesn't exist.
  // The client can be notified either synchronously or asynchronously.
  virtual void fetchNewSingleModule(const ModuleScriptFetchRequest&,
                                    ModuleGraphLevel,
                                    ModuleScriptLoaderClient*) = 0;
};

}  // namespace blink

#endif
