diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llfloaterworldmap.cpp | 53 | ||||
| -rw-r--r-- | indra/newview/llgroupactions.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelprofileclassifieds.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelprofilepicks.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewerinventory.cpp | 26 | 
7 files changed, 81 insertions, 16 deletions
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 8f3ec8af05..c8559fc9d3 100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -121,10 +121,27 @@ static const F32 ZOOM_MAX = 128.f;  class LLWorldMapHandler : public LLCommandHandler  {  public: -	// requires trusted browser to trigger -	LLWorldMapHandler() : LLCommandHandler("worldmap", UNTRUSTED_CLICK_ONLY ) { } -	 -	bool handle(const LLSD& params, +    LLWorldMapHandler() : LLCommandHandler("worldmap", UNTRUSTED_THROTTLE) +    { +    } + +    virtual bool canHandleUntrusted( +        const LLSD& params, +        const LLSD& query_map, +        LLMediaCtrl* web, +        const std::string& nav_type) +    { +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL) +        { +            // NAV_TYPE_EXTERNAL will be throttled +            return true; +        } + +        return false; +    } + +    bool handle(const LLSD& params,                  const LLSD& query_map,                  const std::string& grid,                  LLMediaCtrl* web) @@ -160,12 +177,32 @@ LLWorldMapHandler gWorldMapHandler;  class LLMapTrackAvatarHandler : public LLCommandHandler  {  public: -	// requires trusted browser to trigger -	LLMapTrackAvatarHandler() : LLCommandHandler("maptrackavatar", UNTRUSTED_CLICK_ONLY)  +	LLMapTrackAvatarHandler() : LLCommandHandler("maptrackavatar", UNTRUSTED_THROTTLE)  	{   	} -	 -	bool handle(const LLSD& params, + +    virtual bool canHandleUntrusted( +        const LLSD& params, +        const LLSD& query_map, +        LLMediaCtrl* web, +        const std::string& nav_type) +    { +        if (params.size() < 1) +        { +            return true; // don't block, will fail later +        } + +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL) +        { +            // NAV_TYPE_EXTERNAL will be throttled +            return true; +        } + +        return false; +    } + +    bool handle(const LLSD& params,                  const LLSD& query_map,                  const std::string& grid,                  LLMediaCtrl* web) diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 043316ccca..380e49c320 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -65,7 +65,8 @@ public:              return true; // don't block, will fail later          } -        if (nav_type == NAV_TYPE_CLICKED) +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL)          {              return true;          } diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 0c2ec017b5..4b8d92c7fd 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -511,7 +511,8 @@ public:              return true; // don't block, will fail later          } -        if (nav_type == NAV_TYPE_CLICKED) +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL)          {              return true;          } diff --git a/indra/newview/llpanelprofileclassifieds.cpp b/indra/newview/llpanelprofileclassifieds.cpp index dec6cfd83b..3fbaad4dee 100644 --- a/indra/newview/llpanelprofileclassifieds.cpp +++ b/indra/newview/llpanelprofileclassifieds.cpp @@ -93,7 +93,8 @@ public:              return true; // don't block, will fail later          } -        if (nav_type == NAV_TYPE_CLICKED) +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL)          {              return true;          } diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index 0535036cb0..ff3f654d0e 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -74,7 +74,8 @@ public:              return true; // don't block, will fail later          } -        if (nav_type == NAV_TYPE_CLICKED) +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL)          {              return true;          } diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 0f2fe1e1cd..e7a799c754 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -192,7 +192,11 @@ public:          std::string fl_name = params[0].asString(); -        if (nav_type == NAV_TYPE_CLICKED) +        // External browsers explicitly ask user about opening links +        // so treat "external" same as "clicked" in this case, +        // despite it being treated as untrusted. +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL)          {              const std::list<std::string> blacklist_clicked = {                  "camera_presets", diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 33d162ed29..2d33cf6a7f 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -231,9 +231,29 @@ LLLocalizedInventoryItemsDictionary::LLLocalizedInventoryItemsDictionary()  class LLInventoryHandler : public LLCommandHandler  {  public: -	// requires trusted browser to trigger -	LLInventoryHandler() : LLCommandHandler("inventory", UNTRUSTED_CLICK_ONLY) { } -	 +    LLInventoryHandler() : LLCommandHandler("inventory", UNTRUSTED_THROTTLE) { } + +    virtual bool canHandleUntrusted( +        const LLSD& params, +        const LLSD& query_map, +        LLMediaCtrl* web, +        const std::string& nav_type) +    { +        if (params.size() < 1) +        { +            return true; // don't block, will fail later +        } + +        if (nav_type == NAV_TYPE_CLICKED +            || nav_type == NAV_TYPE_EXTERNAL) +        { +            // NAV_TYPE_EXTERNAL will be throttled +            return true; +        } + +        return false; +    } +  	bool handle(const LLSD& params,                  const LLSD& query_map,                  const std::string& grid,  | 
