From 6df15cb0908dab240e85b5db1433726ee09ad9bf Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 23 Jul 2013 15:31:36 -0700
Subject: ACME-734 : Fix issues with the lock icon when editing the address
 bar. Generalize the secure browsing UI.

---
 indra/newview/llfloaterwebcontent.cpp | 42 ++++++++++++++++-------------------
 indra/newview/llfloaterwebcontent.h   |  1 +
 2 files changed, 20 insertions(+), 23 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index 62eb9dba8e..e81055f7b1 100755
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -69,7 +69,8 @@ LLFloaterWebContent::LLFloaterWebContent( const Params& params )
 	mShowPageTitle(params.show_page_title),
     mAllowNavigation(true),
     mCurrentURL(""),
-    mDisplayURL("")
+    mDisplayURL(""),
+    mSecureURL(false)
 {
 	mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
 	mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
@@ -242,7 +243,6 @@ 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);
@@ -304,6 +304,9 @@ void LLFloaterWebContent::draw()
 	mBtnBack->setEnabled( mWebBrowser->canNavigateBack() && mAllowNavigation);
 	mBtnForward->setEnabled( mWebBrowser->canNavigateForward() && mAllowNavigation);
 
+    // Show/hide the lock icon
+    mSecureLockIcon->setVisible(mSecureURL && !mAddressCombo->hasFocus());
+
 	LLFloater::draw();
 }
 
@@ -317,7 +320,6 @@ 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)
@@ -349,23 +351,6 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
 		// we populate the status bar with URLs as they change so clear it now we're done
 		const std::string end_str = "";
 		mStatusBarText->setText( end_str );
-
-		// decide if secure browsing icon should be displayed
-		std::string prefix = std::string("https://");
-		std::string test_prefix = mCurrentURL.substr(0, prefix.length());
-		LLStringUtil::toLower(test_prefix);
-		if (test_prefix == prefix)
-		{
-			mSecureLockIcon->setVisible(true);
-            // Hack : we move the text a bit to make space for the lock icon.
-            BOOL browser_has_focus = mWebBrowser->hasFocus();
-            set_current_url("      " + mCurrentURL);
-            mWebBrowser->setFocus(browser_has_focus);
-		}
-        else
-        {
-            mSecureLockIcon->setVisible(false);
-        }
 	}
 	else if(event == MEDIA_EVENT_CLOSE_REQUEST)
 	{
@@ -417,8 +402,7 @@ void LLFloaterWebContent::set_current_url(const std::string& url)
             mAddressCombo->add(mCurrentURL);
         }
 
-        // Update current URLs
-        mDisplayURL = url;
+        // Update current URL
         mCurrentURL = url;
         LLStringUtil::trim(mCurrentURL);
 
@@ -426,10 +410,22 @@ void LLFloaterWebContent::set_current_url(const std::string& url)
         LLURLHistory::removeURL("browser", mCurrentURL);
         LLURLHistory::addURL("browser", mCurrentURL);
 
-        // Clean up browsing list (prevent dupes) and add/select new URL to it
+		// Check if this is a secure URL
+		static const std::string secure_prefix = std::string("https://");
+		std::string prefix = mCurrentURL.substr(0, secure_prefix.length());
+		LLStringUtil::toLower(prefix);
+        mSecureURL = (prefix == secure_prefix);
+        
+        // Hack : we move the text a bit to make space for the lock icon in the secure URL case
+		mDisplayURL = (mSecureURL ? "      " + mCurrentURL : mCurrentURL);
+
+        // Clean up browsing list (prevent dupes) and add/select the new URL to it
         mAddressCombo->remove(mCurrentURL);
         mAddressCombo->add(mDisplayURL);
         mAddressCombo->selectByValue(mDisplayURL);
+
+        // Set the focus back to the web page. When setting the url, there's no point to leave the focus anywhere else.
+		mWebBrowser->setFocus(TRUE);
     }
 }
 
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index 5976474e0e..f7e0db8d9e 100755
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -111,6 +111,7 @@ protected:
 	std::string		mUUID;
 	bool			mShowPageTitle;
     bool            mAllowNavigation;
+    bool            mSecureURL;     // true when the current url is prefixed "https://"
 };
 
 #endif  // LL_LLFLOATERWEBCONTENT_H
-- 
cgit v1.2.3


From 05c2e087153a9816de2c6218c2509cbdb935ccf0 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 23 Jul 2013 17:12:53 -0700
Subject: ACME-734 : MoaP : Move the secure lock icon to the left on Media on
 Prim address bar

---
 indra/newview/llpanelprimmediacontrols.cpp         | 18 ++++++++-------
 indra/newview/llpanelprimmediacontrols.h           |  1 +
 .../default/xui/en/panel_prim_media_controls.xml   | 26 ++++++++++------------
 3 files changed, 23 insertions(+), 22 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 76d38f067d..9504f22a1d 100755
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -94,7 +94,8 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() :
 	mZoomObjectFace(0),
 	mVolumeSliderVisible(0),
 	mWindowShade(NULL),
-	mHideImmediately(false)
+	mHideImmediately(false),
+    mSecureURL(false)
 {
 	mCommitCallbackRegistrar.add("MediaCtrl.Close",		boost::bind(&LLPanelPrimMediaControls::onClickClose, this));
 	mCommitCallbackRegistrar.add("MediaCtrl.Back",		boost::bind(&LLPanelPrimMediaControls::onClickBack, this));
@@ -345,7 +346,7 @@ void LLPanelPrimMediaControls::updateShape()
 		// Disable zoom if HUD
 		mZoomCtrl->setEnabled(!is_hud);
 		mUnzoomCtrl->setEnabled(!is_hud);
-		mSecureLockIcon->setVisible(false);
+        mSecureURL = false;
 		mCurrentURL = media_impl->getCurrentMediaURL();
 		
 		mBackCtrl->setEnabled((media_impl != NULL) && media_impl->canNavigateBack() && can_navigate);
@@ -382,7 +383,7 @@ void LLPanelPrimMediaControls::updateShape()
 			mVolumeSliderCtrl->setVisible(has_focus && shouldVolumeSliderBeVisible());
 			
 			mWhitelistIcon->setVisible(false);
-			mSecureLockIcon->setVisible(false);
+            mSecureURL = false;
 			if (mMediaPanelScroll)
 			{
 				mMediaPanelScroll->setVisible(false);
@@ -416,7 +417,7 @@ void LLPanelPrimMediaControls::updateShape()
 				mMediaPlaySliderCtrl->setEnabled(true);
 			}
 			
-			// video vloume
+			// video volume
 			if(volume <= 0.0)
 			{
 				mMuteBtn->setToggleState(true);
@@ -492,10 +493,8 @@ void LLPanelPrimMediaControls::updateShape()
 			std::string prefix =  std::string("https://");
 			std::string test_prefix = mCurrentURL.substr(0, prefix.length());
 			LLStringUtil::toLower(test_prefix);
-			if(test_prefix == prefix)
-			{
-				mSecureLockIcon->setVisible(has_focus);
-			}
+            mSecureURL = has_focus && (test_prefix == prefix);
+            mCurrentURL = (mSecureURL ? "      " + mCurrentURL : mCurrentURL);
 			
 			if(mCurrentURL!=mPreviousURL)
 			{
@@ -746,6 +745,9 @@ void LLPanelPrimMediaControls::draw()
 			clearFaceOnFade();
 		}
 	}
+
+    // Show/hide the lock icon for secure browsing
+    mSecureLockIcon->setVisible(mSecureURL && !mMediaAddress->hasFocus());
 	
 	// Build rect for icon area in coord system of this panel
 	// Assumes layout_stack is a direct child of this panel
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index eeb433e306..6d2eb3430e 100755
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -191,6 +191,7 @@ private:
 	bool mUpdateSlider;
 	bool mClearFaceOnFade;
 	bool mHideImmediately;
+    bool mSecureURL;
 
 	LLMatrix4 mLastCameraMat;
 	EZoomLevel mCurrentZoom;
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index 198ccd6e2f..8f90521bb2 100755
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -315,7 +315,18 @@
 		<line_editor.commit_callback
 			function="MediaCtrl.CommitURL"/>
 	  </line_editor>
-	  <layout_stack
+        <icon
+        name="media_secure_lock_flag"
+        height="16"
+        follows="top|left"
+        image_name="Lock2"
+        layout="topleft"
+        left_delta="2"
+        top_delta="2"
+        visible="false"
+        tool_tip="Secured Browsing"
+        width="16" />
+        <layout_stack
 		  name="media_address_url_icons"
 		  animate="false"
 		  follows="top|right"
@@ -340,19 +351,6 @@
 			  tool_tip="White List enabled"
 			  width="16" />
 		</layout_panel>
-		<layout_panel
-			layout="topleft"
-			width="16"
-			mouse_opaque="false"
-			auto_resize="false">
-		  <icon
-			  name="media_secure_lock_flag"
-			  height="16"
-			  image_name="Lock2"
-			  layout="topleft"
-			  tool_tip="Secured Browsing"
-			  width="16" />
-		</layout_panel>
 	  </layout_stack>
 	</layout_panel>
 	<layout_panel
-- 
cgit v1.2.3