meow-7.2.2
Gilbert Gonzales 2013-07-22 15:49:42 -07:00
commit ccedada681
6 changed files with 79 additions and 32 deletions

View File

@ -318,7 +318,10 @@ void LLFacebookConnect::openFacebookWeb(std::string url)
{
// Open the URL in an internal browser window without navigation UI
LLFloaterWebContent::Params p;
p.url(url).show_chrome(false);
p.url(url).show_chrome(true);
p.url(url).allow_address_entry(false);
p.url(url).allow_back_forward_navigation(false);
p.url(url).trusted_content(true);
LLFloaterReg::showInstance("fbc_web", p);
//LLUrlAction::openURLExternal(url);

View File

@ -46,7 +46,8 @@ LLFloaterWebContent::_Params::_Params()
id("id"),
window_class("window_class", "web_content"),
show_chrome("show_chrome", true),
allow_address_entry("allow_address_entry", true),
allow_address_entry("allow_address_entry", true),
allow_back_forward_navigation("allow_back_forward_navigation", true),
preferred_media_size("preferred_media_size"),
trusted_content("trusted_content", false),
show_page_title("show_page_title", true)
@ -65,7 +66,10 @@ LLFloaterWebContent::LLFloaterWebContent( const Params& params )
mBtnReload(NULL),
mBtnStop(NULL),
mUUID(params.id()),
mShowPageTitle(params.show_page_title)
mShowPageTitle(params.show_page_title),
mAllowNavigation(true),
mCurrentURL(""),
mDisplayURL("")
{
mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
@ -97,7 +101,7 @@ BOOL LLFloaterWebContent::postBuild()
// cache image for secure browsing
mSecureLockIcon = getChild< LLIconCtrl >("media_secure_lock_flag");
// initialize the URL history using the system URL History manager
initializeURLHistory();
@ -238,11 +242,13 @@ void LLFloaterWebContent::open_media(const Params& p)
mWebBrowser->setTarget(p.target);
mWebBrowser->navigateTo(p.url, "text/html");
mSecureLockIcon->setVisible(false);
set_current_url(p.url);
getChild<LLLayoutPanel>("status_bar")->setVisible(p.show_chrome);
getChild<LLLayoutPanel>("nav_controls")->setVisible(p.show_chrome);
bool address_entry_enabled = p.allow_address_entry && !p.trusted_content;
mAllowNavigation = p.allow_back_forward_navigation;
getChildView("address")->setEnabled(address_entry_enabled);
getChildView("popexternal")->setEnabled(address_entry_enabled);
@ -295,8 +301,8 @@ void LLFloaterWebContent::onClose(bool app_quitting)
void LLFloaterWebContent::draw()
{
// this is asynchronous so we need to keep checking
mBtnBack->setEnabled( mWebBrowser->canNavigateBack() );
mBtnForward->setEnabled( mWebBrowser->canNavigateForward() );
mBtnBack->setEnabled( mWebBrowser->canNavigateBack() && mAllowNavigation);
mBtnForward->setEnabled( mWebBrowser->canNavigateForward() && mAllowNavigation);
LLFloater::draw();
}
@ -311,6 +317,7 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
if ( url.length() )
mStatusBarText->setText( url );
mSecureLockIcon->setVisible(false);
set_current_url( url );
}
else if(event == MEDIA_EVENT_NAVIGATE_BEGIN)
@ -344,17 +351,19 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
mStatusBarText->setText( end_str );
// decide if secure browsing icon should be displayed
std::string prefix = std::string("https://");
std::string prefix = std::string("https://");
std::string test_prefix = mCurrentURL.substr(0, prefix.length());
LLStringUtil::toLower(test_prefix);
if(test_prefix == prefix)
if (test_prefix == prefix)
{
mSecureLockIcon->setVisible(true);
// Hack : we move the text a bit to make space for the lock icon.
set_current_url(" " + mCurrentURL);
}
else
{
mSecureLockIcon->setVisible(false);
}
else
{
mSecureLockIcon->setVisible(false);
}
}
else if(event == MEDIA_EVENT_CLOSE_REQUEST)
{
@ -397,15 +406,26 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
void LLFloaterWebContent::set_current_url(const std::string& url)
{
if (!mCurrentURL.empty())
{
// Clean up the current browsing list to show true URL
mAddressCombo->remove(mDisplayURL);
mAddressCombo->add(mCurrentURL);
}
// Update current URLs
mDisplayURL = url;
mCurrentURL = url;
LLStringUtil::trim(mCurrentURL);
// serialize url history into the system URL History manager
LLURLHistory::removeURL("browser", mCurrentURL);
LLURLHistory::addURL("browser", mCurrentURL);
// Serialize url history into the system URL History manager
LLURLHistory::removeURL("browser", mCurrentURL);
LLURLHistory::addURL("browser", mCurrentURL);
mAddressCombo->remove( mCurrentURL );
mAddressCombo->add( mCurrentURL );
mAddressCombo->selectByValue( mCurrentURL );
// Clean up browsing list (prevent dupes) and add/select new URL to it
mAddressCombo->remove(mCurrentURL);
mAddressCombo->add(mDisplayURL);
mAddressCombo->selectByValue(mDisplayURL);
}
void LLFloaterWebContent::onClickForward()
@ -449,6 +469,7 @@ void LLFloaterWebContent::onEnterAddress()
// make sure there is at least something there.
// (perhaps this test should be for minimum length of a URL)
std::string url = mAddressCombo->getValue().asString();
LLStringUtil::trim(url);
if ( url.length() > 0 )
{
mWebBrowser->navigateTo( url, "text/html");
@ -460,6 +481,7 @@ void LLFloaterWebContent::onPopExternal()
// make sure there is at least something there.
// (perhaps this test should be for minimum length of a URL)
std::string url = mAddressCombo->getValue().asString();
LLStringUtil::trim(url);
if ( url.length() > 0 )
{
LLWeb::loadURLExternal( url );

View File

@ -54,6 +54,7 @@ public:
id;
Optional<bool> show_chrome,
allow_address_entry,
allow_back_forward_navigation,
trusted_content,
show_page_title;
Optional<LLRect> preferred_media_size;
@ -105,9 +106,11 @@ protected:
LLView* mBtnReload;
LLView* mBtnStop;
std::string mCurrentURL;
std::string mCurrentURL; // Current URL
std::string mDisplayURL; // URL being displayed in the address bar (can differ by trailing / leading space)
std::string mUUID;
bool mShowPageTitle;
bool mAllowNavigation;
};
#endif // LL_LLFLOATERWEBCONTENT_H

View File

@ -103,22 +103,29 @@ LLSD LLURLHistory::getURLHistory(const std::string& collection)
// static
void LLURLHistory::addURL(const std::string& collection, const std::string& url)
{
if(! url.empty())
if(!url.empty())
{
sHistorySD[collection].insert(0, url);
LLURI u(url);
std::string simplified_url = u.scheme() + "://" + u.authority() + u.path();
sHistorySD[collection].insert(0, simplified_url);
LLURLHistory::limitSize(collection);
}
}
// static
void LLURLHistory::removeURL(const std::string& collection, const std::string& url)
{
for(int index = 0; index < sHistorySD[collection].size(); index++)
if(!url.empty())
{
if(sHistorySD[collection].get(index).asString() == url)
{
sHistorySD[collection].erase(index);
}
}
LLURI u(url);
std::string simplified_url = u.scheme() + "://" + u.authority() + u.path();
for(int index = 0; index < sHistorySD[collection].size(); index++)
{
if(sHistorySD[collection].get(index).asString() == simplified_url)
{
sHistorySD[collection].erase(index);
}
}
}
}
// static

View File

@ -2000,7 +2000,11 @@ void LLViewerMediaImpl::loadURI()
"<>#%"
";/?:@&=",
false);
llinfos << "Asking media source to load URI: " << uri << llendl;
{
// Do not log the query parts
LLURI u(uri);
llinfos << "Asking media source to load URI: " << u.scheme() << "://" << u.authority() << u.path() << llendl;
}
mMediaSource->loadURI( uri );
@ -2567,7 +2571,11 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi
if(mPriority == LLPluginClassMedia::PRIORITY_UNLOADED)
{
// Helpful to have media urls in log file. Shouldn't be spammy.
llinfos << "NOT LOADING media id= " << mTextureId << " url=" << url << " mime_type=" << mime_type << llendl;
{
// Do not log the query parts
LLURI u(url);
llinfos << "NOT LOADING media id= " << mTextureId << " url=" << u.scheme() << "://" << u.authority() << u.path() << " mime_type=" << mime_type << llendl;
}
// This impl should not be loaded at this time.
LL_DEBUGS("PluginPriority") << this << "Not loading (PRIORITY_UNLOADED)" << LL_ENDL;
@ -2582,7 +2590,11 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi
void LLViewerMediaImpl::navigateInternal()
{
// Helpful to have media urls in log file. Shouldn't be spammy.
llinfos << "media id= " << mTextureId << " url=" << mMediaURL << " mime_type=" << mMimeType << llendl;
{
// Do not log the query parts
LLURI u(mMediaURL);
llinfos << "media id= " << mTextureId << " url=" << u.scheme() << "://" << u.authority() << u.path() << " mime_type=" << mMimeType << llendl;
}
if(mNavigateSuspended)
{

View File

@ -125,10 +125,10 @@
<icon
name="media_secure_lock_flag"
height="16"
follows="top|right"
follows="top|left"
image_name="Lock2"
layout="topleft"
left_delta="620"
left_delta="2"
top_delta="2"
visible="false"
tool_tip="Secured Browsing"