зеркало из https://github.com/mozilla/gecko-dev.git
Bug 779378: B2G Voicemail: Hook up to permissions manager; r=gwagner
This commit is contained in:
Родитель
f4c2eb9bc2
Коммит
1004044a0d
|
@ -1138,20 +1138,20 @@ Navigator::GetMozVoicemail(nsIDOMMozVoicemail** aVoicemail)
|
|||
|
||||
if (!mVoicemail) {
|
||||
nsCOMPtr<nsPIDOMWindow> window = do_QueryReferent(mWindow);
|
||||
NS_ENSURE_TRUE(window && window->GetDocShell(), NS_OK);
|
||||
NS_ENSURE_TRUE(window, NS_OK);
|
||||
|
||||
// Chrome is always allowed access, so do the permission check only
|
||||
// for non-chrome pages.
|
||||
if (!nsContentUtils::IsCallerChrome()) {
|
||||
nsCOMPtr<nsIDocument> doc = do_QueryInterface(window->GetExtantDocument());
|
||||
NS_ENSURE_TRUE(doc, NS_OK);
|
||||
nsCOMPtr<nsIDocument> document = do_QueryInterface(window->GetExtantDocument());
|
||||
NS_ENSURE_TRUE(document, NS_OK);
|
||||
nsCOMPtr<nsIPrincipal> principal = document->NodePrincipal();
|
||||
nsCOMPtr<nsIPermissionManager> permMgr =
|
||||
do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
|
||||
NS_ENSURE_TRUE(permMgr, NS_OK);
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
doc->NodePrincipal()->GetURI(getter_AddRefs(uri));
|
||||
PRUint32 permission = nsIPermissionManager::DENY_ACTION;
|
||||
permMgr->TestPermissionFromPrincipal(principal, "voicemail", &permission);
|
||||
|
||||
if (!nsContentUtils::URIIsChromeOrInPref(uri, "dom.voicemail.whitelist")) {
|
||||
return NS_OK;
|
||||
}
|
||||
if (permission != nsIPermissionManager::ALLOW_ACTION) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult rv = NS_NewVoicemail(window, getter_AddRefs(mVoicemail));
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
|
||||
MARIONETTE_TIMEOUT = 10000;
|
||||
|
||||
const WHITELIST_PREF = "dom.voicemail.whitelist";
|
||||
let uriPrePath = window.location.protocol + "//" + window.location.host;
|
||||
SpecialPowers.setCharPref(WHITELIST_PREF, uriPrePath);
|
||||
SpecialPowers.addPermission("voicemail", true, document);
|
||||
|
||||
let voicemail = window.navigator.mozVoicemail;
|
||||
ok(voicemail instanceof MozVoicemail);
|
||||
|
@ -14,5 +12,5 @@ ok(voicemail instanceof MozVoicemail);
|
|||
is(voicemail.number, "+15552175049");
|
||||
is(voicemail.displayName, "Voicemail");
|
||||
|
||||
SpecialPowers.clearUserPref(WHITELIST_PREF);
|
||||
SpecialPowers.removePermission("voicemail", document);
|
||||
finish();
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
const WHITELIST_PREF = "dom.voicemail.whitelist";
|
||||
let uriPrePath = window.location.protocol + "//" + window.location.host;
|
||||
SpecialPowers.setCharPref(WHITELIST_PREF, uriPrePath);
|
||||
SpecialPowers.addPermission("voicemail", true, document);
|
||||
|
||||
let voicemail = window.navigator.mozVoicemail;
|
||||
ok(voicemail instanceof MozVoicemail);
|
||||
|
@ -222,7 +220,7 @@ function testLevel3DiscardInactive() {
|
|||
}
|
||||
|
||||
function cleanUp() {
|
||||
SpecialPowers.clearUserPref(WHITELIST_PREF);
|
||||
SpecialPowers.removePermission("voicemail", document);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче