Bug 1536744 - Add nsResProtocolHandler::GetSingleton() r=baku

Differential Revision: https://phabricator.services.mozilla.com/D30692

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Valentin Gosu 2019-05-28 13:46:17 +00:00
Родитель b31eaf52cc
Коммит ef2b6cf771
3 изменённых файлов: 20 добавлений и 3 удалений

Просмотреть файл

@ -316,7 +316,7 @@ Classes = [
'singleton': True, 'singleton': True,
'type': 'nsResProtocolHandler', 'type': 'nsResProtocolHandler',
'headers': ['/netwerk/protocol/res/nsResProtocolHandler.h'], 'headers': ['/netwerk/protocol/res/nsResProtocolHandler.h'],
'init_method': 'Init', 'constructor': 'nsResProtocolHandler::GetSingleton',
}, },
{ {
'cid': '{9c7ec5d1-23f9-11d5-aea8-8fcc0793e97f}', 'cid': '{9c7ec5d1-23f9-11d5-aea8-8fcc0793e97f}',

Просмотреть файл

@ -25,6 +25,20 @@ using mozilla::dom::ContentParent;
#define kGRE "gre" #define kGRE "gre"
#define kAndroid "android" #define kAndroid "android"
mozilla::StaticRefPtr<nsResProtocolHandler> nsResProtocolHandler::sSingleton;
already_AddRefed<nsResProtocolHandler> nsResProtocolHandler::GetSingleton() {
if (!sSingleton) {
RefPtr<nsResProtocolHandler> handler = new nsResProtocolHandler();
if (NS_WARN_IF(NS_FAILED(handler->Init()))) {
return nullptr;
}
sSingleton = handler;
ClearOnShutdown(&sSingleton);
}
return do_AddRef(sSingleton);
}
nsresult nsResProtocolHandler::Init() { nsresult nsResProtocolHandler::Init() {
nsresult rv; nsresult rv;
rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::APP, mAppURI); rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::APP, mAppURI);

Просмотреть файл

@ -23,6 +23,8 @@ class nsResProtocolHandler final
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIRESPROTOCOLHANDLER NS_DECL_NSIRESPROTOCOLHANDLER
static already_AddRefed<nsResProtocolHandler> GetSingleton();
NS_FORWARD_NSIPROTOCOLHANDLER(mozilla::net::SubstitutingProtocolHandler::) NS_FORWARD_NSIPROTOCOLHANDLER(mozilla::net::SubstitutingProtocolHandler::)
nsResProtocolHandler() nsResProtocolHandler()
@ -32,8 +34,6 @@ class nsResProtocolHandler final
URI_IS_POTENTIALLY_TRUSTWORTHY, URI_IS_POTENTIALLY_TRUSTWORTHY,
/* aEnforceFileOrJar = */ false) {} /* aEnforceFileOrJar = */ false) {}
MOZ_MUST_USE nsresult Init();
NS_IMETHOD SetSubstitution(const nsACString& aRoot, NS_IMETHOD SetSubstitution(const nsACString& aRoot,
nsIURI* aBaseURI) override; nsIURI* aBaseURI) override;
NS_IMETHOD SetSubstitutionWithFlags(const nsACString& aRoot, nsIURI* aBaseURI, NS_IMETHOD SetSubstitutionWithFlags(const nsACString& aRoot, nsIURI* aBaseURI,
@ -71,6 +71,9 @@ class nsResProtocolHandler final
nsACString& aResult) override; nsACString& aResult) override;
private: private:
MOZ_MUST_USE nsresult Init();
static mozilla::StaticRefPtr<nsResProtocolHandler> sSingleton;
nsCString mAppURI; nsCString mAppURI;
nsCString mGREURI; nsCString mGREURI;
#ifdef ANDROID #ifdef ANDROID