Backed out changeset: ce892720a893 (SL-10924)

meow-7.2.2
andreykproductengine 2019-04-12 14:34:07 +03:00
parent 960d1169f0
commit 9194a97e94
3 changed files with 1 additions and 79 deletions

View File

@ -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 )
{

View File

@ -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 );
};

View File

@ -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)