image/build/nsImageModule.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
     2  *
     3  * This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #include "nsImageModule.h"
     9 #include "mozilla/ModuleUtils.h"
    10 #include "nsMimeTypes.h"
    12 #include "ImageFactory.h"
    13 #include "RasterImage.h"
    14 #include "SurfaceCache.h"
    16 #include "imgLoader.h"
    17 #include "imgRequest.h"
    18 #include "imgRequestProxy.h"
    19 #include "imgTools.h"
    20 #include "DiscardTracker.h"
    22 #include "nsICOEncoder.h"
    23 #include "nsPNGEncoder.h"
    24 #include "nsJPEGEncoder.h"
    25 #include "nsBMPEncoder.h"
    27 // objects that just require generic constructors
    28 using namespace mozilla::image;
    30 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(imgLoader, Init)
    31 NS_GENERIC_FACTORY_CONSTRUCTOR(imgRequestProxy)
    32 NS_GENERIC_FACTORY_CONSTRUCTOR(imgTools)
    33 NS_GENERIC_FACTORY_CONSTRUCTOR(nsICOEncoder)
    34 NS_GENERIC_FACTORY_CONSTRUCTOR(nsJPEGEncoder)
    35 NS_GENERIC_FACTORY_CONSTRUCTOR(nsPNGEncoder)
    36 NS_GENERIC_FACTORY_CONSTRUCTOR(nsBMPEncoder)
    37 NS_DEFINE_NAMED_CID(NS_IMGLOADER_CID);
    38 NS_DEFINE_NAMED_CID(NS_IMGREQUESTPROXY_CID);
    39 NS_DEFINE_NAMED_CID(NS_IMGTOOLS_CID);
    40 NS_DEFINE_NAMED_CID(NS_ICOENCODER_CID);
    41 NS_DEFINE_NAMED_CID(NS_JPEGENCODER_CID);
    42 NS_DEFINE_NAMED_CID(NS_PNGENCODER_CID);
    43 NS_DEFINE_NAMED_CID(NS_BMPENCODER_CID);
    45 static const mozilla::Module::CIDEntry kImageCIDs[] = {
    46   { &kNS_IMGLOADER_CID, false, nullptr, imgLoaderConstructor, },
    47   { &kNS_IMGREQUESTPROXY_CID, false, nullptr, imgRequestProxyConstructor, },
    48   { &kNS_IMGTOOLS_CID, false, nullptr, imgToolsConstructor, },
    49   { &kNS_ICOENCODER_CID, false, nullptr, nsICOEncoderConstructor, },
    50   { &kNS_JPEGENCODER_CID, false, nullptr, nsJPEGEncoderConstructor, },
    51   { &kNS_PNGENCODER_CID, false, nullptr, nsPNGEncoderConstructor, },
    52   { &kNS_BMPENCODER_CID, false, nullptr, nsBMPEncoderConstructor, },
    53   { nullptr }
    54 };
    56 static const mozilla::Module::ContractIDEntry kImageContracts[] = {
    57   { "@mozilla.org/image/cache;1", &kNS_IMGLOADER_CID },
    58   { "@mozilla.org/image/loader;1", &kNS_IMGLOADER_CID },
    59   { "@mozilla.org/image/request;1", &kNS_IMGREQUESTPROXY_CID },
    60   { "@mozilla.org/image/tools;1", &kNS_IMGTOOLS_CID },
    61   { "@mozilla.org/image/encoder;2?type=" IMAGE_ICO_MS, &kNS_ICOENCODER_CID },
    62   { "@mozilla.org/image/encoder;2?type=" IMAGE_JPEG, &kNS_JPEGENCODER_CID },
    63   { "@mozilla.org/image/encoder;2?type=" IMAGE_PNG, &kNS_PNGENCODER_CID },
    64   { "@mozilla.org/image/encoder;2?type=" IMAGE_BMP, &kNS_BMPENCODER_CID },
    65   { nullptr }
    66 };
    68 static const mozilla::Module::CategoryEntry kImageCategories[] = {
    69   { "Gecko-Content-Viewers", IMAGE_GIF, "@mozilla.org/content/document-loader-factory;1" },
    70   { "Gecko-Content-Viewers", IMAGE_JPEG, "@mozilla.org/content/document-loader-factory;1" },
    71   { "Gecko-Content-Viewers", IMAGE_PJPEG, "@mozilla.org/content/document-loader-factory;1" },
    72   { "Gecko-Content-Viewers", IMAGE_JPG, "@mozilla.org/content/document-loader-factory;1" },
    73   { "Gecko-Content-Viewers", IMAGE_ICO, "@mozilla.org/content/document-loader-factory;1" },
    74   { "Gecko-Content-Viewers", IMAGE_ICO_MS, "@mozilla.org/content/document-loader-factory;1" },
    75   { "Gecko-Content-Viewers", IMAGE_BMP, "@mozilla.org/content/document-loader-factory;1" },
    76   { "Gecko-Content-Viewers", IMAGE_BMP_MS, "@mozilla.org/content/document-loader-factory;1" },
    77   { "Gecko-Content-Viewers", IMAGE_ICON_MS, "@mozilla.org/content/document-loader-factory;1" },
    78   { "Gecko-Content-Viewers", IMAGE_PNG, "@mozilla.org/content/document-loader-factory;1" },
    79   { "Gecko-Content-Viewers", IMAGE_X_PNG, "@mozilla.org/content/document-loader-factory;1" },
    80   { "content-sniffing-services", "@mozilla.org/image/loader;1", "@mozilla.org/image/loader;1" },
    81   { nullptr }
    82 };
    84 static bool sInitialized = false;
    85 nsresult
    86 mozilla::image::InitModule()
    87 {
    88   mozilla::image::DiscardTracker::Initialize();
    89   mozilla::image::ImageFactory::Initialize();
    90   mozilla::image::RasterImage::Initialize();
    91   mozilla::image::SurfaceCache::Initialize();
    92   imgLoader::GlobalInit();
    93   sInitialized = true;
    94   return NS_OK;
    95 }
    97 void
    98 mozilla::image::ShutdownModule()
    99 {
   100   if (!sInitialized) {
   101     return;
   102   }
   103   imgLoader::Shutdown();
   104   mozilla::image::SurfaceCache::Shutdown();
   105   mozilla::image::DiscardTracker::Shutdown();
   106   sInitialized = false;
   107 }
   109 static const mozilla::Module kImageModule = {
   110   mozilla::Module::kVersion,
   111   kImageCIDs,
   112   kImageContracts,
   113   kImageCategories,
   114   nullptr,
   115   mozilla::image::InitModule,
   116   // We need to be careful about shutdown ordering to avoid intermittent crashes
   117   // when hashtable enumeration decides to destroy modules in an unfortunate
   118   // order. So our shutdown is invoked explicitly during layout module shutdown.
   119   nullptr
   120 };
   122 NSMODULE_DEFN(nsImageLib2Module) = &kImageModule;

mercurial