summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorKelly Washington <kelly@lindenlab.com>2013-04-30 16:04:41 -0700
committerKelly Washington <kelly@lindenlab.com>2013-04-30 16:04:41 -0700
commit474905badef4679bbce53306c49343703be38263 (patch)
tree2c7825b83c12e5396a4b04ec8e34ba53c61f88bf /indra
parent0bc7056ae6b314fac508f2c417cc5818107cb72e (diff)
MAINT-2646 Viewer should neither grant nor display prompts for unimplemented LSL permissions
* Add the newer run time permissions to the viewer * Filter requested permissions by those the viewer knows about * Show a dialog indicating unknown permissions were requested and a new viewer will be needed to grant them. reviewed with Simon and Soft
Diffstat (limited to 'indra')
-rw-r--r--indra/lscript/lscript_byteformat.h8
-rw-r--r--indra/newview/app_settings/keywords.ini3
-rwxr-xr-xindra/newview/llviewermessage.cpp64
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml23
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml7
5 files changed, 79 insertions, 26 deletions
diff --git a/indra/lscript/lscript_byteformat.h b/indra/lscript/lscript_byteformat.h
index a294def734..54031aaf05 100644
--- a/indra/lscript/lscript_byteformat.h
+++ b/indra/lscript/lscript_byteformat.h
@@ -530,6 +530,10 @@ typedef enum e_lscript_runtime_permissions
SCRIPT_PERMISSION_TRACK_CAMERA,
SCRIPT_PERMISSION_CONTROL_CAMERA,
SCRIPT_PERMISSION_TELEPORT,
+ SCRIPT_PERMISSION_EXPERIENCE,
+ SCRIPT_PERMISSION_SILENT_ESTATE_MANAGEMENT,
+ SCRIPT_PERMISSION_OVERRIDE_ANIMATIONS,
+ SCRIPT_PERMISSION_RETURN_OBJECTS,
SCRIPT_PERMISSION_EOF
} LSCRIPTRunTimePermissions;
@@ -547,6 +551,10 @@ const U32 LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_EOF] =
(0x1 << 10),// SCRIPT_PERMISSION_TRACK_CAMERA
(0x1 << 11),// SCRIPT_PERMISSION_CONTROL_CAMERA
(0x1 << 12),// SCRIPT_PERMISSION_TELEPORT
+ (0x1 << 13),// SCRIPT_PERMISSION_EXPERIENCE,
+ (0x1 << 14),// SCRIPT_PERMISSION_SILENT_ESTATE_MANAGEMENT,
+ (0x1 << 15),// SCRIPT_PERMISSION_OVERRIDE_ANIMATIONS,
+ (0x1 << 16),// SCRIPT_PERMISSION_RETURN_OBJECTS,
};
// http_request string constants
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 6120f22ba4..f0d8b77afd 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -92,6 +92,9 @@ PERMISSION_CHANGE_LINKS Passed to llRequestPermissions library function to req
PERMISSION_TRACK_CAMERA Passed to llRequestPermissions library function to request permission to track agent's camera
PERMISSION_CONTROL_CAMERA Passed to llRequestPermissions library function to request permission to change agent's camera
PERMISSION_TELEPORT Passed to llRequestPermissions library function to request permission to teleport agent
+SCRIPT_PERMISSION_SILENT_ESTATE_MANAGEMENT Passed to llRequestPermissions library function to request permission to silently modify estate access lists
+PERMISSION_OVERRIDE_ANIMATIONS Passed to llRequestPermissions library function to request permission to override animations on agent
+PERMISSION_RETURN_OBJECTS Passed to llRequestPermissions library function to request permission to return objects
DEBUG_CHANNEL Chat channel reserved for debug and error messages from scripts
PUBLIC_CHANNEL Chat channel that broadcasts to all nearby users
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3c0d6189ac..4efe345141 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -163,7 +163,11 @@ const std::string SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] =
"ChangePermissions",
"TrackYourCamera",
"ControlYourCamera",
- "TeleportYourAgent"
+ "TeleportYourAgent",
+ "JoinAnExperience",
+ "SilentlyManageEstateAccess",
+ "OverrideYourAnimations",
+ "ScriptReturnObjects"
};
const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] =
@@ -179,7 +183,11 @@ const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] =
FALSE, // ChangePermissions
FALSE, // TrackYourCamera,
FALSE, // ControlYourCamera
- FALSE // TeleportYourAgent
+ FALSE, // TeleportYourAgent
+ FALSE, // JoinAnExperience
+ FALSE, // SilentlyManageEstateAccess
+ FALSE, // OverrideYourAnimations
+ FALSE, // ScriptReturnObjects
};
bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
@@ -6424,7 +6432,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
LLSD args;
args["OBJECTNAME"] = object_name;
args["NAME"] = LLCacheName::cleanFullName(owner_name);
-
+ S32 known_questions = 0;
BOOL has_not_only_debit = questions ^ LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_DEBIT];
// check the received permission flags against each permission
for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++)
@@ -6432,7 +6440,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
if (questions & LSCRIPTRunTimePermissionBits[i])
{
count++;
-
+ known_questions |= LSCRIPTRunTimePermissionBits[i];
// check whether permission question should cause special caution dialog
caution |= (SCRIPT_QUESTION_IS_CAUTION[i]);
@@ -6442,32 +6450,40 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
script_question += " " + LLTrans::getString(SCRIPT_QUESTIONS[i]) + "\n";
}
}
+
args["QUESTIONS"] = script_question;
- LLSD payload;
- payload["task_id"] = taskid;
- payload["item_id"] = itemid;
- payload["sender"] = sender.getIPandPort();
- payload["questions"] = questions;
- payload["object_name"] = object_name;
- payload["owner_name"] = owner_name;
-
- // check whether cautions are even enabled or not
- if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
+ if (known_questions != questions)
+ { // This is in addition to the normal dialog.
+ LLNotificationsUtil::add("UnknownScriptQuestion",args);
+ }
+
+ if (known_questions)
{
- if (caution)
+ LLSD payload;
+ payload["task_id"] = taskid;
+ payload["item_id"] = itemid;
+ payload["sender"] = sender.getIPandPort();
+ payload["questions"] = known_questions;
+ payload["object_name"] = object_name;
+ payload["owner_name"] = owner_name;
+
+ // check whether cautions are even enabled or not
+ if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
{
- args["FOOTERTEXT"] = (count > 1) ? LLTrans::getString("AdditionalPermissionsRequestHeader") + "\n\n" + script_question : "";
+ if (caution)
+ {
+ args["FOOTERTEXT"] = (count > 1) ? LLTrans::getString("AdditionalPermissionsRequestHeader") + "\n\n" + script_question : "";
+ }
+ // display the caution permissions prompt
+ LLNotificationsUtil::add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload);
+ }
+ else
+ {
+ // fall back to default behavior if cautions are entirely disabled
+ LLNotificationsUtil::add("ScriptQuestion", args, payload);
}
- // display the caution permissions prompt
- LLNotificationsUtil::add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload);
- }
- else
- {
- // fall back to default behavior if cautions are entirely disabled
- LLNotificationsUtil::add("ScriptQuestion", args, payload);
}
-
}
}
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 105bef7321..1f39ec041e 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6863,8 +6863,29 @@ Do not allow access if you do not fully understand why it wants access to your a
[FOOTERTEXT]
</footer>
</notification>
+
+ <notification
+ icon="notify.tga"
+ name="UnknownScriptQuestion"
+ persist="false"
+ type="notify">
+ &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, an object owned by &apos;[NAME]&apos;, requested an unknown script runtime permission.
+
+Please update your viewer to grant this permission.
+ <tag>confirm</tag>
+ <form name="form">
+ <button
+ index="0"
+ name="Ok"
+ text="Ok"/>
+ <button
+ index="2"
+ name="Mute"
+ text="Block"/>
+ </form>
+ </notification>
- <notification
+ <notification
icon="notify.tga"
name="ScriptDialog"
show_toast="false"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 7c08aef65e..e52e941c28 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -410,7 +410,12 @@ Please try logging in again in a minute.</string>
<string name="NotConnected">Not Connected</string>
<string name="AgentNameSubst">(You)</string> <!-- Substitution for agent name -->
<string name="TeleportYourAgent">Teleport you</string>
-
+ <string name="JoinAnExperience">Join an experience</string> <!-- not used -->
+ <string name="SilentlyManageEstateAccess">Suppress alerts when managing estate access lists</string>
+ <string name="OverrideYourAnimations">Replace your default animations</string>
+ <string name="ScriptReturnObjects">Return objects on your behalf</string>
+ <string name="UnknownScriptPermission">(unknown)!</string>
+
<!-- Sim Access labels -->
<string name="SIM_ACCESS_PG">General</string>
<string name="SIM_ACCESS_MATURE">Moderate</string>