InjectedBundleScriptWorld::InjectedBundleScriptWorld(DOMWrapperWorld& world, const String& name)
    : m_world(world)
    , m_name(name)
{
    ASSERT(!allWorlds().contains(m_world.ptr()));
    allWorlds().add(m_world.ptr(), this);
}
PassRefPtr<InjectedBundleScriptWorld> InjectedBundleScriptWorld::getOrCreate(DOMWrapperWorld& world)
{
    if (&world == &mainThreadNormalWorld())
        return normalWorld();

    if (InjectedBundleScriptWorld* existingWorld = allWorlds().get(&world))
        return existingWorld;

    return adoptRef(new InjectedBundleScriptWorld(world, uniqueWorldName()));
}
InjectedBundleScriptWorld::~InjectedBundleScriptWorld()
{
    ASSERT(allWorlds().contains(m_world.ptr()));
    allWorlds().remove(m_world.ptr());
}
InjectedBundleScriptWorld::InjectedBundleScriptWorld(PassRefPtr<DOMWrapperWorld> world)
    : m_world(world)
{
    ASSERT(!allWorlds().contains(m_world.get()));
    allWorlds().add(m_world.get(), this);
}