mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-08 05:27:14 +09:00

Before this change, we were going through the chain of base classes for each IDL interface object and having them set the prototype to their prototype. Instead of doing that, reorder things so that we set the right prototype immediately in Foo::initialize(), and then don't bother in all the base class overrides. This knocks off a ~1% profile item on Speedometer 3.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/Bindings/FileSystemEntryPrototype.h>
|
|
#include <LibWeb/Bindings/Intrinsics.h>
|
|
#include <LibWeb/EntriesAPI/FileSystemEntry.h>
|
|
#include <LibWeb/HTML/Window.h>
|
|
|
|
namespace Web::EntriesAPI {
|
|
|
|
GC_DEFINE_ALLOCATOR(FileSystemEntry);
|
|
|
|
GC::Ref<FileSystemEntry> FileSystemEntry::create(JS::Realm& realm, EntryType entry_type, ByteString name)
|
|
{
|
|
return realm.create<FileSystemEntry>(realm, entry_type, name);
|
|
}
|
|
|
|
FileSystemEntry::FileSystemEntry(JS::Realm& realm, EntryType entry_type, ByteString name)
|
|
: PlatformObject(realm)
|
|
, m_entry_type(entry_type)
|
|
, m_name(name)
|
|
{
|
|
}
|
|
|
|
void FileSystemEntry::initialize(JS::Realm& realm)
|
|
{
|
|
WEB_SET_PROTOTYPE_FOR_INTERFACE(FileSystemEntry);
|
|
Base::initialize(realm);
|
|
}
|
|
|
|
// https://wicg.github.io/entries-api/#dom-filesystementry-isfile
|
|
bool FileSystemEntry::is_file() const
|
|
{
|
|
// The isFile getter steps are to return true if this is a file entry and false otherwise.
|
|
return m_entry_type == EntryType::File;
|
|
}
|
|
|
|
// https://wicg.github.io/entries-api/#dom-filesystementry-isdirectory
|
|
bool FileSystemEntry::is_directory() const
|
|
{
|
|
// The isDirectory getter steps are to return true if this is a directory entry and false otherwise.
|
|
return m_entry_type == EntryType::Directory;
|
|
}
|
|
|
|
// https://wicg.github.io/entries-api/#dom-filesystementry-name
|
|
ByteString FileSystemEntry::name() const
|
|
{
|
|
// The name getter steps are to return this's name.
|
|
return m_name;
|
|
}
|
|
|
|
}
|