Commit e0962800 authored by Hiroshige Hayashizaki's avatar Hiroshige Hayashizaki Committed by Commit Bot

[Import Maps] Add internals.getParsedImportMap()

As a preparation for adding parser-related tests.

Bug: 990561
Change-Id: I8fdb07059514fe088438e8499cd4ac20e1c0b528
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1734328
Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686350}
parent dd7de273
......@@ -22,7 +22,8 @@ class ParsedSpecifier;
// Import maps.
// https://wicg.github.io/import-maps/
// https://github.com/WICG/import-maps/blob/master/spec.md
class ImportMap final : public GarbageCollectedFinalized<ImportMap> {
class CORE_EXPORT ImportMap final
: public GarbageCollectedFinalized<ImportMap> {
public:
static ImportMap* Create(const Modulator& modulator_for_built_in_modules,
const String& text,
......
......@@ -178,6 +178,7 @@ class CORE_EXPORT Modulator : public GarbageCollectedFinalized<Modulator>,
virtual void RegisterImportMap(const ImportMap*) = 0;
virtual bool IsAcquiringImportMaps() const = 0;
virtual void ClearIsAcquiringImportMaps() = 0;
virtual const ImportMap* GetImportMapForTest() const = 0;
// https://html.spec.whatwg.org/C/#hostgetimportmetaproperties
virtual ModuleImportMeta HostGetImportMetaProperties(ModuleRecord) const = 0;
......
......@@ -77,6 +77,7 @@ class ModulatorImplBase : public Modulator {
const KURL&,
const ReferrerScriptInfo&,
ScriptPromiseResolver*) override;
const ImportMap* GetImportMapForTest() const final { return import_map_; }
void RegisterImportMap(const ImportMap*) final;
bool IsAcquiringImportMaps() const final { return acquiring_import_maps_; }
void ClearIsAcquiringImportMaps() final { acquiring_import_maps_ = false; }
......
......@@ -138,6 +138,11 @@ void DummyModulator::ClearIsAcquiringImportMaps() {
NOTREACHED();
}
const ImportMap* DummyModulator::GetImportMapForTest() const {
NOTREACHED();
return nullptr;
}
ModuleImportMeta DummyModulator::HostGetImportMetaProperties(
ModuleRecord) const {
NOTREACHED();
......
......@@ -64,6 +64,7 @@ class DummyModulator : public Modulator {
void RegisterImportMap(const ImportMap*) override;
bool IsAcquiringImportMaps() const override;
void ClearIsAcquiringImportMaps() override;
const ImportMap* GetImportMapForTest() const override;
ModuleImportMeta HostGetImportMetaProperties(ModuleRecord) const override;
ScriptValue InstantiateModule(v8::Local<v8::Module>, const KURL&) override;
Vector<ModuleRequest> ModuleRequestsFromModuleRecord(
......
......@@ -131,6 +131,7 @@
#include "third_party/blink/renderer/core/paint/paint_layer.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/script/import_map.h"
#include "third_party/blink/renderer/core/script/modulator.h"
#include "third_party/blink/renderer/core/scroll/programmatic_scroll_animator.h"
#include "third_party/blink/renderer/core/scroll/scroll_animator_base.h"
......@@ -3480,6 +3481,23 @@ String Internals::resolveModuleSpecifier(const String& specifier,
return result.GetString();
}
String Internals::getParsedImportMap(Document* document,
ExceptionState& exception_state) {
Modulator* modulator =
Modulator::From(ToScriptStateForMainWorld(document->GetFrame()));
if (!modulator) {
V8ThrowException::ThrowTypeError(v8::Isolate::GetCurrent(), "No modulator");
return String();
}
const ImportMap* import_map = modulator->GetImportMapForTest();
if (!import_map)
return "{}";
return import_map->ToString();
}
void Internals::setDeviceEmulationScale(float scale,
ExceptionState& exception_state) {
if (scale <= 0)
......
......@@ -333,6 +333,8 @@ class Internals final : public ScriptWrappable {
Document*,
ExceptionState&);
String getParsedImportMap(Document*, ExceptionState&);
void SetDeviceProximity(Document*,
const String& event_type,
double value,
......
......@@ -434,6 +434,12 @@
// Used for testing Import Maps https://github.com/domenic/import-maps
[RaisesException] DOMString resolveModuleSpecifier(DOMString specifier, DOMString base_url, Document document);
// Returns the current serialized import map of the Document.
// TODO(crbug.com/927181): Currently this returns the "imports" value,
// because Blink doesn't support scopes yet. Update this once scopes are
// implemented.
[RaisesException] DOMString getParsedImportMap(Document document);
// Sets the scale for devtools device emulation.
[RaisesException] void setDeviceEmulationScale(float scale);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment