1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsHyphenationManager_h__
7 #define nsHyphenationManager_h__
9 #include "base/shared_memory.h"
10 #include "mozilla/Omnijar.h"
11 #include "nsHashKeys.h"
12 #include "nsAtomHashKeys.h"
13 #include "nsInterfaceHashtable.h"
14 #include "nsIObserver.h"
15 #include "nsRefPtrHashtable.h"
20 class nsHyphenationManager
: public nsIObserver
{
25 nsHyphenationManager();
27 already_AddRefed
<nsHyphenator
> GetHyphenator(nsAtom
* aLocale
);
29 void ShareHyphDictToProcess(nsIURI
* aURI
, base::ProcessId aPid
,
30 base::SharedMemoryHandle
* aOutHandle
,
33 static nsHyphenationManager
* Instance();
35 static void Shutdown();
37 size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf
);
40 virtual ~nsHyphenationManager();
43 void LoadPatternList();
44 void LoadPatternListFromOmnijar(mozilla::Omnijar::Type aType
);
45 void LoadPatternListFromDir(nsIFile
* aDir
);
48 nsRefPtrHashtable
<nsAtomHashKey
, nsAtom
> mHyphAliases
;
49 nsInterfaceHashtable
<nsAtomHashKey
, nsIURI
> mPatternFiles
;
50 nsRefPtrHashtable
<nsAtomHashKey
, nsHyphenator
> mHyphenators
;
52 static nsHyphenationManager
* sInstance
;
55 #endif // nsHyphenationManager_h__