Backed out changeset: ce892720a893 (SL-10924)
parent
960d1169f0
commit
9194a97e94
|
|
@ -38,80 +38,6 @@
|
|||
//////////////////////////////////////////////
|
||||
// Build a help URL from a topic and formatter
|
||||
|
||||
//static
|
||||
std::string LLViewerHelpUtil::helpDataEncode(const std::string &component)
|
||||
{
|
||||
const std::string data_marker = "data:";
|
||||
if (component.compare(0, data_marker.length(), data_marker) == 0)
|
||||
{
|
||||
// This is not url, but data, data part needs to be properly escaped
|
||||
// data part is separated by ',' from header. Minimal data uri is "data:,"
|
||||
// See "data URI scheme"
|
||||
size_t separator = component.find(",");
|
||||
if (separator != std::string::npos)
|
||||
{
|
||||
size_t header_size = separator + 1;
|
||||
std::string header = component.substr(0, header_size);
|
||||
if (header.find("base64") != std::string::npos)
|
||||
{
|
||||
// assume url-safe data
|
||||
return component;
|
||||
}
|
||||
|
||||
std::string data = component.substr(header_size, component.length() - header_size);
|
||||
|
||||
const std::string allowed_sorted =
|
||||
"%-." //include % since it can be a sign of being pre-escaped and is an allowed symbol
|
||||
"0123456789"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"_"
|
||||
"abcdefghijklmnopqrstuvwxyz";
|
||||
|
||||
bool needs_escaping = false;
|
||||
|
||||
std::string::const_iterator it = data.begin();
|
||||
std::string::const_iterator end = data.end();
|
||||
std::string::const_iterator allowed_begin(allowed_sorted.begin());
|
||||
std::string::const_iterator allowed_end(allowed_sorted.end());
|
||||
std::string::value_type c;
|
||||
for (; it != end; ++it)
|
||||
{
|
||||
c = *it;
|
||||
if (!std::binary_search(allowed_begin, allowed_end, c))
|
||||
{
|
||||
// found unescaped symbol
|
||||
needs_escaping = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!needs_escaping)
|
||||
{
|
||||
// pre-escaped
|
||||
return component;
|
||||
}
|
||||
|
||||
// Notes: Teoretically file can be partially pre-escaped,
|
||||
// but we can't reliably distinguish what user intended to do,
|
||||
// so escape everything and let user control the rest.
|
||||
// Escapes % as well
|
||||
std::string url = header + helpURLEncode(data);
|
||||
|
||||
return url;
|
||||
}
|
||||
else
|
||||
{
|
||||
// corrupted or not a data scheme? Nothing we can do.
|
||||
return component;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not a data scheme
|
||||
return component;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLViewerHelpUtil::helpURLEncode( const std::string &component )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ class LLOSInfo;
|
|||
class LLViewerHelpUtil
|
||||
{
|
||||
public:
|
||||
static std::string helpDataEncode( const std::string &component );
|
||||
static std::string helpURLEncode( const std::string &component );
|
||||
static std::string buildHelpURL( const std::string &topic );
|
||||
};
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@
|
|||
#include "llwebprofile.h"
|
||||
#include "llwindow.h"
|
||||
#include "llvieweraudio.h"
|
||||
#include "llviewerhelputil.h"
|
||||
#include "llcorehttputil.h"
|
||||
|
||||
#include "llfloaterwebcontent.h" // for handling window close requests and geometry change requests in media browser windows.
|
||||
|
|
@ -2485,10 +2484,8 @@ void LLViewerMediaImpl::unload()
|
|||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::navigateTo(const std::string& input_url, const std::string& mime_type, bool rediscover_type, bool server_request, bool clean_browser)
|
||||
void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type, bool rediscover_type, bool server_request, bool clean_browser)
|
||||
{
|
||||
std::string url = LLViewerHelpUtil::helpDataEncode(input_url);
|
||||
|
||||
cancelMimeTypeProbe();
|
||||
|
||||
if(mMediaURL != url)
|
||||
|
|
|
|||
Loading…
Reference in New Issue