blob: f83ea2ba98913586366474bc7dcb49773745a186 [file] [log] [blame]
// Copyright (c) 2014 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.
#include "ModulesInitializer.h"
#include "bindings/modules/v8/ModuleBindingsInitializer.h"
#include "core/EventTypeNames.h"
#include "core/css/CSSPaintImageGenerator.h"
#include "core/dom/Document.h"
#include "core/html/HTMLCanvasElement.h"
#include "core/offscreencanvas/OffscreenCanvas.h"
#include "modules/EventModulesFactory.h"
#include "modules/EventModulesNames.h"
#include "modules/EventTargetModulesNames.h"
#include "modules/IndexedDBNames.h"
#include "modules/accessibility/AXObjectCacheImpl.h"
#include "modules/canvas2d/CanvasRenderingContext2D.h"
#include "modules/compositorworker/CompositorWorkerThread.h"
#include "modules/csspaint/CSSPaintImageGeneratorImpl.h"
#include "modules/filesystem/DraggedIsolatedFileSystemImpl.h"
#include "modules/imagebitmap/ImageBitmapRenderingContext.h"
#include "modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h"
#include "modules/webdatabase/DatabaseManager.h"
#include "modules/webgl/WebGL2RenderingContext.h"
#include "modules/webgl/WebGLRenderingContext.h"
#include "wtf/PtrUtil.h"
namespace blink {
void ModulesInitializer::initialize()
{
ASSERT(!isInitialized());
// Strings must be initialized before calling CoreInitializer::init().
const unsigned modulesStaticStringsCount = EventNames::EventModulesNamesCount
+ EventTargetNames::EventTargetModulesNamesCount
+ IndexedDBNames::IndexedDBNamesCount;
StringImpl::reserveStaticStringsCapacityForSize(modulesStaticStringsCount);
EventNames::initModules();
EventTargetNames::initModules();
Document::registerEventFactory(EventModulesFactory::create());
ModuleBindingsInitializer::init();
IndexedDBNames::init();
AXObjectCache::init(AXObjectCacheImpl::create);
DraggedIsolatedFileSystem::init(DraggedIsolatedFileSystemImpl::prepareForDataObject);
CSSPaintImageGenerator::init(CSSPaintImageGeneratorImpl::create);
CoreInitializer::initialize();
// Canvas context types must be registered with the HTMLCanvasElement.
HTMLCanvasElement::registerRenderingContextFactory(wrapUnique(new CanvasRenderingContext2D::Factory()));
HTMLCanvasElement::registerRenderingContextFactory(wrapUnique(new WebGLRenderingContext::Factory()));
HTMLCanvasElement::registerRenderingContextFactory(wrapUnique(new WebGL2RenderingContext::Factory()));
HTMLCanvasElement::registerRenderingContextFactory(wrapUnique(new ImageBitmapRenderingContext::Factory()));
// OffscreenCanvas context types must be registered with the OffscreenCanvas.
OffscreenCanvas::registerRenderingContextFactory(wrapUnique(new OffscreenCanvasRenderingContext2D::Factory()));
OffscreenCanvas::registerRenderingContextFactory(wrapUnique(new WebGLRenderingContext::Factory()));
ASSERT(isInitialized());
}
void ModulesInitializer::shutdown()
{
ASSERT(isInitialized());
DatabaseManager::terminateDatabaseThread();
CoreInitializer::shutdown();
CompositorWorkerThread::clearSharedBackingThread();
}
} // namespace blink