Bug 1356334: Part 4 - Add a helper to synchronously get an extension's name from its ID. r=billm

MozReview-Commit-ID: 8nuvM4PR7XR

--HG--
extra : source : b2a663ffd1446f9f70b220866855a0ecb3503761
extra : histedit_source : 16847e7aececf6c944bbb6b21639629c60bcdc93
This commit is contained in:
Kris Maglione 2017-08-11 21:22:18 -07:00
parent faa8815613
commit 7788abbf4f
7 changed files with 38 additions and 0 deletions

View File

@ -52,6 +52,12 @@ interface nsIAddonPolicyService : nsISupports
*/
boolean addonMayLoadURI(in AString aAddonId, in nsIURI aURI, [optional] in boolean aExplicit);
/**
* Returns the name of the WebExtension with the given ID, or the ID string
* if no matching add-on can be found.
*/
AString getExtensionName(in AString aAddonId);
/**
* Returns true if a given extension:// URI is web-accessible.
*/

View File

@ -34,6 +34,12 @@ interface WebExtensionPolicy {
[Constant]
readonly attribute ByteString baseURL;
/**
* The extension's user-visible name.
*/
[Constant]
readonly attribute DOMString name;
/**
* The content security policy string to apply to all pages loaded from the
* extension's moz-extension: protocol.
@ -142,6 +148,8 @@ dictionary WebExtensionInit {
required DOMString baseURL;
DOMString name = "";
required WebExtensionLocalizeCallback localizeCallback;
required MatchPatternSet allowedOrigins;

View File

@ -993,6 +993,7 @@ this.Extension = class extends ExtensionData {
return {
id: this.id,
uuid: this.uuid,
name: this.name,
instanceId: this.instanceId,
manifest: this.manifest,
resourceURL: this.resourceURL,

View File

@ -377,6 +377,17 @@ ExtensionPolicyService::AddonMayLoadURI(const nsAString& aAddonId,
return NS_ERROR_INVALID_ARG;
}
nsresult
ExtensionPolicyService::GetExtensionName(const nsAString& aAddonId,
nsAString& aName)
{
if (WebExtensionPolicy* policy = GetByID(aAddonId)) {
aName.Assign(policy->Name());
return NS_OK;
}
return NS_ERROR_INVALID_ARG;
}
nsresult
ExtensionPolicyService::ExtensionURILoadableByAnyone(nsIURI* aURI, bool* aResult)
{

View File

@ -89,6 +89,7 @@ WebExtensionPolicy::WebExtensionPolicy(GlobalObject& aGlobal,
ErrorResult& aRv)
: mId(NS_AtomizeMainThread(aInit.mId))
, mHostname(aInit.mMozExtensionHostname)
, mName(aInit.mName)
, mContentSecurityPolicy(aInit.mContentSecurityPolicy)
, mLocalizeCallback(aInit.mLocalizeCallback)
, mPermissions(new AtomSet(aInit.mPermissions))

View File

@ -82,6 +82,15 @@ public:
void Localize(const nsAString& aInput, nsString& aResult) const;
const nsString& Name() const
{
return mName;
}
void GetName(nsAString& aName) const
{
aName = mName;
}
const nsString& ContentSecurityPolicy() const
{
return mContentSecurityPolicy;
@ -153,6 +162,7 @@ private:
nsCString mHostname;
nsCOMPtr<nsIURI> mBaseURI;
nsString mName;
nsString mContentSecurityPolicy;
bool mActive = false;

View File

@ -317,6 +317,7 @@ ExtensionManager = {
policy = new WebExtensionPolicy({
id: extension.id,
mozExtensionHostname: extension.uuid,
name: extension.name,
baseURL: extension.resourceURL,
permissions: Array.from(extension.permissions),