mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-04 23:30:20 +00:00
LibJS+LibWeb: Add fast_is<T> helpers for HTML::Script class family
This commit is contained in:
parent
bbbf83ef12
commit
1a80833665
4 changed files with 27 additions and 0 deletions
|
@ -24,6 +24,14 @@ public:
|
||||||
virtual ~HostDefined() = default;
|
virtual ~HostDefined() = default;
|
||||||
|
|
||||||
virtual void visit_host_defined_self(Cell::Visitor&) = 0;
|
virtual void visit_host_defined_self(Cell::Visitor&) = 0;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
bool fast_is() const = delete;
|
||||||
|
|
||||||
|
virtual bool is_script() const { return false; }
|
||||||
|
virtual bool is_classic_script() const { return false; }
|
||||||
|
virtual bool is_module_script() const { return false; }
|
||||||
|
virtual bool is_javascript_module_script() const { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual ~Script() override;
|
virtual ~Script() override;
|
||||||
|
|
|
@ -40,6 +40,8 @@ public:
|
||||||
private:
|
private:
|
||||||
ClassicScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
ClassicScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
||||||
|
|
||||||
|
virtual bool is_classic_script() const final { return true; }
|
||||||
|
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
GC::Ptr<JS::Script> m_script_record;
|
GC::Ptr<JS::Script> m_script_record;
|
||||||
|
@ -47,3 +49,6 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool JS::Script::HostDefined::fast_is<Web::HTML::ClassicScript>() const { return is_classic_script(); }
|
||||||
|
|
|
@ -20,6 +20,9 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ModuleScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
ModuleScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual bool is_module_script() const final { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class JavaScriptModuleScript final : public ModuleScript {
|
class JavaScriptModuleScript final : public ModuleScript {
|
||||||
|
@ -45,6 +48,7 @@ protected:
|
||||||
JavaScriptModuleScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
JavaScriptModuleScript(URL::URL base_url, ByteString filename, JS::Realm&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual bool is_javascript_module_script() const final { return true; }
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
GC::Ptr<JS::SourceTextModule> m_record;
|
GC::Ptr<JS::SourceTextModule> m_record;
|
||||||
|
@ -56,3 +60,9 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool JS::Script::HostDefined::fast_is<Web::HTML::ModuleScript>() const { return is_module_script(); }
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool JS::Script::HostDefined::fast_is<Web::HTML::JavaScriptModuleScript>() const { return is_javascript_module_script(); }
|
||||||
|
|
|
@ -42,6 +42,7 @@ protected:
|
||||||
virtual void visit_edges(Visitor&) override;
|
virtual void visit_edges(Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual bool is_script() const final { return true; }
|
||||||
virtual void visit_host_defined_self(JS::Cell::Visitor&) override;
|
virtual void visit_host_defined_self(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
Optional<URL::URL> m_base_url;
|
Optional<URL::URL> m_base_url;
|
||||||
|
@ -56,3 +57,6 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool JS::Script::HostDefined::fast_is<Web::HTML::Script>() const { return is_script(); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue