1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
// 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/time_zone_monitor/TimeZoneMonitorClient.h"
#include "modules/webdatabase/DatabaseManager.h"
#include "modules/webgl/WebGL2RenderingContext.h"
#include "modules/webgl/WebGLRenderingContext.h"
#include "platform/mojo/MojoHelper.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);
// Some unit tests may have no message loop ready, so we can't initialize the
// mojo stuff here. They can initialize those mojo stuff they're interested in
// later after they got a message loop ready.
if (canInitializeMojo())
TimeZoneMonitorClient::Init();
CoreInitializer::initialize();
// Canvas context types must be registered with the HTMLCanvasElement.
HTMLCanvasElement::registerRenderingContextFactory(
WTF::makeUnique<CanvasRenderingContext2D::Factory>());
HTMLCanvasElement::registerRenderingContextFactory(
WTF::makeUnique<WebGLRenderingContext::Factory>());
HTMLCanvasElement::registerRenderingContextFactory(
WTF::makeUnique<WebGL2RenderingContext::Factory>());
HTMLCanvasElement::registerRenderingContextFactory(
WTF::makeUnique<ImageBitmapRenderingContext::Factory>());
// OffscreenCanvas context types must be registered with the OffscreenCanvas.
OffscreenCanvas::registerRenderingContextFactory(
WTF::makeUnique<OffscreenCanvasRenderingContext2D::Factory>());
OffscreenCanvas::registerRenderingContextFactory(
WTF::makeUnique<WebGLRenderingContext::Factory>());
OffscreenCanvas::registerRenderingContextFactory(
WTF::makeUnique<WebGL2RenderingContext::Factory>());
ASSERT(isInitialized());
}
void ModulesInitializer::shutdown() {
ASSERT(isInitialized());
DatabaseManager::terminateDatabaseThread();
CoreInitializer::shutdown();
CompositorWorkerThread::clearSharedBackingThread();
}
} // namespace blink
|