diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
-rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 10 | ||||
-rw-r--r-- | indra/newview/llfloaterfacebook.cpp | 10 | ||||
-rw-r--r-- | indra/newview/llfloaterflickr.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llfloatertwitter.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llimprocessing.cpp | 25 | ||||
-rw-r--r-- | indra/newview/llmediactrl.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llstartup.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llviewermedia.cpp | 276 | ||||
-rw-r--r-- | indra/newview/llviewermedia.h | 10 | ||||
-rw-r--r-- | indra/newview/llwebprofile.cpp | 1 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_about.xml | 12 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_web_content.xml | 103 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/menu_login.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_privacy.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 56 |
18 files changed, 96 insertions, 443 deletions
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index cdb98d26e4..76e9e619d6 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -5.1.3 +5.1.4 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 75c7ee002b..45e2fc9bf0 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -16167,6 +16167,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>CefVerboseLog</key> + <map> + <key>Comment</key> + <string>Enable/disable CEF verbose loggingk</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> </map> </llsd> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c33c0d5684..ce4aab20c7 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1930,8 +1930,6 @@ bool LLAppViewer::cleanup() LLAvatarIconIDCache::getInstance()->save(); - LLViewerMedia::saveCookieFile(); - // Stop the plugin read thread if it's running. LLPluginProcessParent::setUseReadThread(false); @@ -3166,8 +3164,14 @@ LLSD LLAppViewer::getViewerInfo() const cef_ver_codec << " / CEF: "; cef_ver_codec << CEF_VERSION; - cef_ver_codec << " / Chrome: "; + cef_ver_codec << " / Chromium: "; cef_ver_codec << CHROME_VERSION_MAJOR; + cef_ver_codec << "."; + cef_ver_codec << CHROME_VERSION_MINOR; + cef_ver_codec << "."; + cef_ver_codec << CHROME_VERSION_BUILD; + cef_ver_codec << "."; + cef_ver_codec << CHROME_VERSION_PATCH; info["LIBCEF_VERSION"] = cef_ver_codec.str(); #else diff --git a/indra/newview/llfloaterfacebook.cpp b/indra/newview/llfloaterfacebook.cpp index b1d6d8be82..e84cbc289f 100644 --- a/indra/newview/llfloaterfacebook.cpp +++ b/indra/newview/llfloaterfacebook.cpp @@ -1,4 +1,4 @@ -/** +/** * @file llfloaterfacebook.cpp * @brief Implementation of llfloaterfacebook * @author Gilbert@lindenlab.com @@ -41,7 +41,6 @@ #include "llresmgr.h" // LLLocale #include "llsdserialize.h" #include "llloadingindicator.h" -#include "llplugincookiestore.h" #include "llslurl.h" #include "lltrans.h" #include "llsnapshotlivepreview.h" @@ -296,16 +295,11 @@ void LLFacebookStatusPanel::showConnectedLayout() void LLFacebookStatusPanel::onConnect() { LLFacebookConnect::instance().checkConnectionToFacebook(true); - - //Clear only the facebook browser cookies so that the facebook login screen appears - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); } void LLFacebookStatusPanel::onDisconnect() { LLFacebookConnect::instance().disconnectFromFacebook(); - - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); } void LLFacebookStatusPanel::clearAndClose() @@ -810,7 +804,7 @@ void LLFacebookCheckinPanel::sendCheckin() LLAgentUI::buildSLURL(slurl); std::string slurl_string = slurl.getSLURLString(); - // Use a valid http:// URL if the scheme is secondlife:// + // Use a valid http:// URL if the scheme is secondlife:// LLURI slurl_uri(slurl_string); if (slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME) { diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp index 15b7c7fafa..69a92b2b54 100644 --- a/indra/newview/llfloaterflickr.cpp +++ b/indra/newview/llfloaterflickr.cpp @@ -40,7 +40,6 @@ #include "llresmgr.h" // LLLocale #include "llsdserialize.h" #include "llloadingindicator.h" -#include "llplugincookiestore.h" #include "llslurl.h" #include "lltrans.h" #include "llsnapshotlivepreview.h" @@ -660,16 +659,11 @@ void LLFlickrAccountPanel::showConnectedLayout() void LLFlickrAccountPanel::onConnect() { LLFlickrConnect::instance().checkConnectionToFlickr(true); - - //Clear only the flickr browser cookies so that the flickr login screen appears - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".flickr.com"); } void LLFlickrAccountPanel::onDisconnect() { LLFlickrConnect::instance().disconnectFromFlickr(); - - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".flickr.com"); } //////////////////////// diff --git a/indra/newview/llfloatertwitter.cpp b/indra/newview/llfloatertwitter.cpp index 803c80ac1a..2b33bc6935 100644 --- a/indra/newview/llfloatertwitter.cpp +++ b/indra/newview/llfloatertwitter.cpp @@ -41,7 +41,6 @@ #include "llresmgr.h" // LLLocale #include "llsdserialize.h" #include "llloadingindicator.h" -#include "llplugincookiestore.h" #include "llslurl.h" #include "lltrans.h" #include "llsnapshotlivepreview.h" @@ -683,16 +682,11 @@ void LLTwitterAccountPanel::showConnectedLayout() void LLTwitterAccountPanel::onConnect() { LLTwitterConnect::instance().checkConnectionToTwitter(true); - - //Clear only the twitter browser cookies so that the twitter login screen appears - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".twitter.com"); } void LLTwitterAccountPanel::onDisconnect() { LLTwitterConnect::instance().disconnectFromTwitter(); - - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".twitter.com"); } //////////////////////// diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index 9a11680d42..491671c46f 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -615,7 +615,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, { LL_INFOS("Messaging") << "Received IM_GROUP_NOTICE message." << LL_ENDL; - LLUUID agent_id = from_id; + LLUUID agent_id; U8 has_inventory; U8 asset_type = 0; LLUUID group_id; @@ -680,6 +680,29 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, item_name = ll_safe_string((const char*)notice_bin_bucket->item_name); } + if (group_id != from_id) + { + agent_id = from_id; + } + else + { + S32 index = original_name.find(" Resident"); + if (index != std::string::npos) + { + original_name = original_name.substr(0, index); + } + + // The group notice packet does not have an AgentID. Obtain one from the name cache. + // If last name is "Resident" strip it out so the cache name lookup works. + std::string legacy_name = gCacheName->buildLegacyName(original_name); + agent_id = LLAvatarNameCache::findIdByName(legacy_name); + + if (agent_id.isNull()) + { + LL_WARNS("Messaging") << "buildLegacyName returned null while processing " << original_name << LL_ENDL; + } + } + if (agent_id.notNull() && LLMuteList::getInstance()->isMuted(agent_id)) { break; diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index a8025906c7..7f6955d08c 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -1022,7 +1022,7 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) // try as slurl first if (!LLURLDispatcher::dispatch(url, "clicked", NULL, mTrusted)) { - LLWeb::loadURL(url, target, std::string()); + LLWeb::loadURL(url, target, uuid); } // CP: removing this code because we no longer support popups so this breaks the flow. diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 2ed2f8644e..62560a2fc8 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -972,9 +972,6 @@ bool idle_startup() // Load Avatars icons cache LLAvatarIconIDCache::getInstance()->load(); - // Load media plugin cookies - LLViewerMedia::loadCookieFile(); - LLRenderMuteList::getInstance()->loadFromFile(); //------------------------------------------------- diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index f4b5055cd9..75108b3ef0 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -50,7 +50,6 @@ #include "llpanelprofile.h" #include "llparcel.h" #include "llpluginclassmedia.h" -#include "llplugincookiestore.h" #include "llurldispatcher.h" #include "lluuid.h" #include "llversioninfo.h" @@ -154,7 +153,6 @@ LLViewerMediaObserver::~LLViewerMediaObserver() } -LLPluginCookieStore *LLViewerMedia::sCookieStore = NULL; LLURL LLViewerMedia::sOpenIDURL; std::string LLViewerMedia::sOpenIDCookie; LLPluginClassMedia* LLViewerMedia::sSpareBrowserMediaSource = NULL; @@ -169,8 +167,6 @@ static F64 sLowestLoadableImplInterest = 0.0f; static bool sAnyMediaShowing = false; static bool sAnyMediaPlaying = false; static boost::signals2::connection sTeleportFinishConnection; -static std::string sUpdatedCookies; -static const char *PLUGIN_COOKIE_FILE_NAME = "plugin_cookies.txt"; ////////////////////////////////////////////////////////////////////////////////////////// static void add_media_impl(LLViewerMediaImpl* media) @@ -610,12 +606,6 @@ void LLViewerMedia::updateMedia(void *dummy_arg) sAnyMediaShowing = false; sAnyMediaPlaying = false; - sUpdatedCookies = getCookieStore()->getChangedCookies(); - if(!sUpdatedCookies.empty()) - { - LL_DEBUGS() << "updated cookies will be sent to all loaded plugins: " << LL_ENDL; - LL_DEBUGS() << sUpdatedCookies << LL_ENDL; - } impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); @@ -1059,64 +1049,6 @@ void LLViewerMedia::clearAllCookies() pimpl->mMediaSource->clear_cookies(); } } - - // Clear all cookies from the cookie store - getCookieStore()->setAllCookies(""); - - // FIXME: this may not be sufficient, since the on-disk cookie file won't get written until some browser instance exits cleanly. - // It also won't clear cookies for other accounts, or for any account if we're not logged in, and won't do anything at all if there are no webkit plugins loaded. - // Until such time as we can centralize cookie storage, the following hack should cover these cases: - - // HACK: Look for cookie files in all possible places and delete them. - // NOTE: this assumes knowledge of what happens inside the webkit plugin (it's what adds 'browser_profile' to the path and names the cookie file) - - // Places that cookie files can be: - // <getOSUserAppDir>/browser_profile/cookies - // <getOSUserAppDir>/first_last/browser_profile/cookies (note that there may be any number of these!) - // <getOSUserAppDir>/first_last/plugin_cookies.txt (note that there may be any number of these!) - - std::string base_dir = gDirUtilp->getOSUserAppDir() + gDirUtilp->getDirDelimiter(); - std::string target; - std::string filename; - - LL_DEBUGS() << "base dir = " << base_dir << LL_ENDL; - - // The non-logged-in version is easy - target = base_dir; - target += "browser_profile"; - target += gDirUtilp->getDirDelimiter(); - target += "cookies"; - LL_DEBUGS() << "target = " << target << LL_ENDL; - if(LLFile::isfile(target)) - { - LLFile::remove(target); - } - - // the hard part: iterate over all user directories and delete the cookie file from each one - LLDirIterator dir_iter(base_dir, "*_*"); - while (dir_iter.next(filename)) - { - target = gDirUtilp->add(base_dir, filename); - gDirUtilp->append(target, "browser_profile"); - gDirUtilp->append(target, "cookies"); - LL_DEBUGS() << "target = " << target << LL_ENDL; - if(LLFile::isfile(target)) - { - LLFile::remove(target); - } - - // Other accounts may have new-style cookie files too -- delete them as well - target = gDirUtilp->add(base_dir, filename); - gDirUtilp->append(target, PLUGIN_COOKIE_FILE_NAME); - LL_DEBUGS() << "target = " << target << LL_ENDL; - if(LLFile::isfile(target)) - { - LLFile::remove(target); - } - } - - // If we have an OpenID cookie, re-add it to the cookie store. - setOpenIDCookie(std::string()); } ///////////////////////////////////////////////////////////////////////////////////////// @@ -1145,7 +1077,7 @@ void LLViewerMedia::setCookiesEnabled(bool enabled) LLViewerMediaImpl* pimpl = *iter; if(pimpl->mMediaSource) { - pimpl->mMediaSource->enable_cookies(enabled); + pimpl->mMediaSource->cookies_enabled(enabled); } } } @@ -1170,127 +1102,7 @@ void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int por ///////////////////////////////////////////////////////////////////////////////////////// // static ///////////////////////////////////////////////////////////////////////////////////////// -// static -LLPluginCookieStore *LLViewerMedia::getCookieStore() -{ - if(sCookieStore == NULL) - { - sCookieStore = new LLPluginCookieStore; - } - - return sCookieStore; -} - -///////////////////////////////////////////////////////////////////////////////////////// -// static -void LLViewerMedia::loadCookieFile() -{ - // build filename for each user - std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PLUGIN_COOKIE_FILE_NAME); - - if (resolved_filename.empty()) - { - LL_INFOS() << "can't get path to plugin cookie file - probably not logged in yet." << LL_ENDL; - return; - } - - // open the file for reading - llifstream file(resolved_filename.c_str()); - if (!file.is_open()) - { - LL_WARNS() << "can't load plugin cookies from file \"" << PLUGIN_COOKIE_FILE_NAME << "\"" << LL_ENDL; - return; - } - - getCookieStore()->readAllCookies(file, true); - - file.close(); - - // send the clear_cookies message to all loaded plugins - impl_list::iterator iter = sViewerMediaImplList.begin(); - impl_list::iterator end = sViewerMediaImplList.end(); - for (; iter != end; iter++) - { - LLViewerMediaImpl* pimpl = *iter; - if(pimpl->mMediaSource) - { - pimpl->mMediaSource->clear_cookies(); - } - } - - // If we have an OpenID cookie, re-add it to the cookie store. - setOpenIDCookie(std::string()); -} - - -///////////////////////////////////////////////////////////////////////////////////////// -// static -void LLViewerMedia::saveCookieFile() -{ - // build filename for each user - std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PLUGIN_COOKIE_FILE_NAME); - - if (resolved_filename.empty()) - { - LL_INFOS() << "can't get path to plugin cookie file - probably not logged in yet." << LL_ENDL; - return; - } - - // open a file for writing - llofstream file(resolved_filename.c_str()); - if (!file.is_open()) - { - LL_WARNS() << "can't open plugin cookie file \"" << PLUGIN_COOKIE_FILE_NAME << "\" for writing" << LL_ENDL; - return; - } - - getCookieStore()->writePersistentCookies(file); - - file.close(); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// static -void LLViewerMedia::addCookie(const std::string &name, const std::string &value, const std::string &domain, const LLDate &expires, const std::string &path, bool secure) -{ - std::stringstream cookie; - - cookie << name << "=" << LLPluginCookieStore::quoteString(value); - - if(expires.notNull()) - { - cookie << "; expires=" << expires.asRFC1123(); - } - - cookie << "; domain=" << domain; - - cookie << "; path=" << path; - - if(secure) - { - cookie << "; secure"; - } - - getCookieStore()->setCookies(cookie.str()); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// static -void LLViewerMedia::addSessionCookie(const std::string &name, const std::string &value, const std::string &domain, const std::string &path, bool secure) -{ - // A session cookie just has a NULL date. - addCookie(name, value, domain, LLDate(), path, secure); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// static -void LLViewerMedia::removeCookie(const std::string &name, const std::string &domain, const std::string &path ) -{ - // To remove a cookie, add one with the same name, domain, and path that expires in the past. - - addCookie(name, "", domain, LLDate(LLDate::now().secondsSinceEpoch() - 1.0), path); -} - +//// static LLSD LLViewerMedia::getHeaders() { @@ -1395,8 +1207,6 @@ void LLViewerMedia::getOpenIDCookieCoro(std::string url) hostEnd = authority.size(); } - getCookieStore()->setCookiesFromHost(sOpenIDCookie, authority.substr(hostStart, hostEnd - hostStart)); - if (url.length()) { LLMediaCtrl* media_instance = LLFloaterReg::getInstance("destinations")->getChild<LLMediaCtrl>("destination_guide_contents"); @@ -1434,7 +1244,6 @@ void LLViewerMedia::getOpenIDCookieCoro(std::string url) httpHeaders->append(HTTP_OUT_HEADER_COOKIE, sOpenIDCookie); httpHeaders->append(HTTP_OUT_HEADER_USER_AGENT, getCurrentUserAgent()); - LL_DEBUGS("MediaAuth") << "Requesting " << url << LL_ENDL; LL_DEBUGS("MediaAuth") << "sOpenIDCookie = [" << sOpenIDCookie << "]" << LL_ENDL; @@ -1459,13 +1268,9 @@ void LLViewerMedia::getOpenIDCookieCoro(std::string url) const std::string& cookie = resultHeaders[HTTP_IN_HEADER_SET_COOKIE].asStringRef(); LL_DEBUGS("MediaAuth") << "cookie = " << cookie << LL_ENDL; - // *TODO: What about bad status codes? Does this destroy previous cookies? - LLViewerMedia::getCookieStore()->setCookiesFromHost(cookie, hostAuth); - // Set cookie for snapshot publishing. std::string authCookie = cookie.substr(0, cookie.find(";")); // strip path LLWebProfile::setAuthCookie(authCookie); - } ///////////////////////////////////////////////////////////////////////////////////////// @@ -1660,12 +1465,6 @@ void LLViewerMedia::cleanupClass() delete sSpareBrowserMediaSource; sSpareBrowserMediaSource = NULL; } - - if (sCookieStore != NULL) - { - delete sCookieStore; - sCookieStore = NULL; - } } ////////////////////////////////////////////////////////////////////////////////////////// @@ -1898,6 +1697,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ std::string user_data_path_cookies = gDirUtilp->getOSUserAppDir(); user_data_path_cookies += gDirUtilp->getDirDelimiter(); + std::string user_data_path_cef_log = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "cef_log.txt"); + // Fix for EXT-5960 - make browser profile specific to user (cache, cookies etc.) // If the linden username returned is blank, that can only mean we are // at the login page displaying login Web page or Web browser test via Develop menu. @@ -1906,7 +1707,6 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ std::string linden_user_dir = gDirUtilp->getLindenUserDir(); if ( ! linden_user_dir.empty() ) { - // gDirUtilp->getLindenUserDir() is whole path, not just Linden name user_data_path_cookies = linden_user_dir; user_data_path_cookies += gDirUtilp->getDirDelimiter(); }; @@ -1927,13 +1727,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ { media_source = new LLPluginClassMedia(owner); media_source->setSize(default_width, default_height); - media_source->setUserDataPath(user_data_path_cache, user_data_path_cookies); + media_source->setUserDataPath(user_data_path_cache, user_data_path_cookies, user_data_path_cef_log); media_source->setLanguageCode(LLUI::getLanguage()); media_source->setZoomFactor(zoom_factor); // collect 'cookies enabled' setting from prefs and send to embedded browser bool cookies_enabled = gSavedSettings.getBOOL( "CookiesEnabled" ); - media_source->enable_cookies( cookies_enabled || clean_browser); + media_source->cookies_enabled( cookies_enabled || clean_browser); // collect 'plugins enabled' setting from prefs and send to embedded browser bool plugins_enabled = gSavedSettings.getBOOL( "BrowserPluginsEnabled" ); @@ -2040,17 +1840,6 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) media_source->clear_cache(); } - // TODO: Only send cookies to plugins that need them - // Ideally, the plugin should tell us whether it handles cookies or not -- either via the init response or through a separate message. - // Due to the ordering of messages, it's possible we wouldn't get that information back in time to send cookies before sending a navigate message, - // which could cause odd race conditions. - std::string all_cookies = LLViewerMedia::getCookieStore()->getAllCookies(); - LL_DEBUGS() << "setting cookies: " << all_cookies << LL_ENDL; - if(!all_cookies.empty()) - { - media_source->set_cookies(all_cookies); - } - mMediaSource = media_source; mMediaSource->setDeleteOK(false) ; updateVolume(); @@ -2992,14 +2781,10 @@ void LLViewerMediaImpl::update() updateVolume(); // TODO: this is updated every frame - is this bad? - updateJavascriptObject(); - - // If we didn't just create the impl, it may need to get cookie updates. - if(!sUpdatedCookies.empty()) - { - // TODO: Only send cookies to plugins that need them - mMediaSource->set_cookies(sUpdatedCookies); - } + // Removing this as part of the post viewer64 media update + // Removed as not implemented in CEF embedded browser + // See MAINT-8194 for a more fuller description + // updateJavascriptObject(); } @@ -3489,22 +3274,40 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla case LLViewerMediaObserver::MEDIA_EVENT_PICK_FILE_REQUEST: { - // Display a file picker - std::string response; - LLFilePicker& picker = LLFilePicker::instance(); - if (!picker.getOpenFile(LLFilePicker::FFLOAD_ALL)) + std::vector<std::string> responses; + + bool pick_multiple_files = plugin->getIsMultipleFilePick(); + if (pick_multiple_files == false) { - // The user didn't pick a file -- the empty response string will indicate this. + picker.getOpenFile(LLFilePicker::FFLOAD_ALL); + + std::string filename = picker.getFirstFile(); + responses.push_back(filename); } + else + { + if (picker.getMultipleOpenFiles()) + { + std::string filename = picker.getFirstFile(); - response = picker.getFirstFile(); + responses.push_back(filename); - plugin->sendPickFileResponse(response); + while (!filename.empty()) + { + filename = picker.getNextFile(); + + if (!filename.empty()) + { + responses.push_back(filename); + } + } + } + } + plugin->sendPickFileResponse(responses); } break; - case LLViewerMediaObserver::MEDIA_EVENT_AUTH_REQUEST: { LLNotification::Params auth_request_params; @@ -3574,13 +3377,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla //////////////////////////////////////////////////////////////////////////////// // virtual -void LLViewerMediaImpl::handleCookieSet(LLPluginClassMedia* self, const std::string &cookie) -{ - LLViewerMedia::getCookieStore()->setCookies(cookie); -} - -//////////////////////////////////////////////////////////////////////////////// -// virtual void LLViewerMediaImpl::cut() { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 0212bf88bf..6e18c4fecb 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -50,7 +50,6 @@ class LLViewerMediaTexture; class LLMediaEntry; class LLVOVolume; class LLMimeDiscoveryResponder; -class LLPluginCookieStore; typedef LLPointer<LLViewerMediaImpl> viewer_media_t; /////////////////////////////////////////////////////////////////////////////// @@ -149,13 +148,6 @@ public: // Set the proxy config for all loaded plugins static void setProxyConfig(bool enable, const std::string &host, int port); - static LLPluginCookieStore *getCookieStore(); - static void loadCookieFile(); - static void saveCookieFile(); - static void addCookie(const std::string &name, const std::string &value, const std::string &domain, const LLDate &expires, const std::string &path = std::string("/"), bool secure = false ); - static void addSessionCookie(const std::string &name, const std::string &value, const std::string &domain, const std::string &path = std::string("/"), bool secure = false ); - static void removeCookie(const std::string &name, const std::string &domain, const std::string &path = std::string("/") ); - static void openIDSetup(const std::string &openid_url, const std::string &openid_token); static void openIDCookieResponse(const std::string& url, const std::string &cookie); @@ -178,7 +170,6 @@ private: static void openIDSetupCoro(std::string openidUrl, std::string openidToken); static void getOpenIDCookieCoro(std::string url); - static LLPluginCookieStore *sCookieStore; static LLURL sOpenIDURL; static std::string sOpenIDCookie; static LLPluginClassMedia* sSpareBrowserMediaSource; @@ -337,7 +328,6 @@ public: // Inherited from LLPluginClassMediaOwner /*virtual*/ void handleMediaEvent(LLPluginClassMedia* plugin, LLPluginClassMediaOwner::EMediaEvent); - /*virtual*/ void handleCookieSet(LLPluginClassMedia* self, const std::string &cookie); // LLEditMenuHandler overrides /*virtual*/ void cut(); diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp index 06ce497510..81d4e30a7a 100644 --- a/indra/newview/llwebprofile.cpp +++ b/indra/newview/llwebprofile.cpp @@ -31,7 +31,6 @@ // libs #include "llbufferstream.h" #include "llimagepng.h" -#include "llplugincookiestore.h" #include "llsdserialize.h" diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 60f36770bb..71f4d81195 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -8,14 +8,14 @@ help_topic="floater_about" save_rect="true" title="ABOUT [CAPITALIZED_APP_NAME]" - width="470"> + width="500"> <tab_container follows="all" top="25" left="10" height="405" - width="450" + width="480" name="about_tab" tab_position="top"> <panel @@ -33,7 +33,7 @@ max_length="65536" name="support_editor" top="5" - width="435" + width="465" word_wrap="true" /> <button follows="left|top" @@ -56,7 +56,7 @@ left="5" name="linden_intro" top="10" - width="435" + width="465" wrap="true"> Second Life is brought to you by the Lindens, with open source contributions from: @@ -71,7 +71,7 @@ with open source contributions from: max_length="65536" name="contrib_names" top_pad="10" - width="435" + width="465" word_wrap="true"> Dummy Name replaced at run time </text_editor> @@ -91,7 +91,7 @@ Dummy Name replaced at run time max_length="65536" name="licenses_editor" top="5" - width="435" + width="465" word_wrap="true"> 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index fe9ffba6cd..9a097d933b 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -178,108 +178,7 @@ width="22"> <button.commit_callback function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/ceftests.html"/> - </button> - - <button - image_overlay="Video_URL_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - chrome="true" - tool_tip="MPEG4 Video Test" - enabled="true" - follows="left|top" - height="22" - layout="topleft" - left="27" - name="VLC Plugin Test" - top="0" - width="22"> - <button.commit_callback - function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/sample_media/ss.mp4"/> - </button> - <button - image_overlay="Video_URL_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - chrome="true" - tool_tip="MKV Video Test" - enabled="true" - follows="left|top" - height="22" - layout="topleft" - left="51" - name="VLC Plugin Test" - top="0" - width="22"> - <button.commit_callback - function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/sample_media/jellyfish.mkv"/> - </button> - <button - image_overlay="Video_URL_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - chrome="true" - tool_tip="WebM Video Test" - enabled="true" - follows="left|top" - height="22" - layout="topleft" - left="75" - name="VLC Plugin Test" - top="0" - width="22"> - <button.commit_callback - function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/sample_media/jumprope.webm"/> - </button> - <button - image_overlay="Video_URL_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - chrome="true" - tool_tip="MP3 audio Test" - enabled="true" - follows="left|top" - height="22" - layout="topleft" - left="99" - name="VLC Plugin Test" - top="0" - width="22"> - <button.commit_callback - function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/alegria.mp3"/> - </button> - <button - image_overlay="Video_URL_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - chrome="true" - tool_tip="FLV Test" - enabled="true" - follows="left|top" - height="22" - layout="topleft" - left="123" - name="VLC Plugin Test" - top="0" - width="22"> - <button.commit_callback - function="WebContent.TestURL" - parameter="https://callum-linden.s3.amazonaws.com/sample_media/vandal.flv"/> + parameter="https://sl-viewer-media-system.s3.amazonaws.com/index.html"/> </button> </layout_panel> <layout_panel diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 4e2f819023..07b3cc3bd8 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -245,7 +245,7 @@ name="Media Browser"> <menu_item_call.on_click function="Advanced.WebContentTest" - parameter="http://google.com"/> + parameter="http://duckduckgo.com"/> </menu_item_call> <menu create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index fa15fb0657..dcd8f0b495 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3163,7 +3163,7 @@ shortcut="control|alt|shift|Z"> <menu_item_call.on_click function="Advanced.WebContentTest" - parameter="http://google.com"/> + parameter="http://duckduckgo.com"/> </menu_item_call> <menu_item_call label="FB Connect Test" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 284688d4d1..2ec5cef640 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -19,7 +19,7 @@ follows="left|top" height="23" label="Clear History" - tool_tip="Clear login image, last location, teleport history, web, and texture cache" + tool_tip="Clear login image, last location, teleport history, web and texture cache" layout="topleft" left="30" name="clear_cache" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 1d4cbca1a5..6732f4ff1c 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -106,38 +106,6 @@ width="300"> Web: </text> - <!-- <radio_group - control_name="UseExternalBrowser" - draw_border="false" - follows="top|left" - height="40" - layout="topleft" - left_delta="50" - name="use_external_browser" - top_pad="-2" - width="480"> - <radio_item - height="20" - label="Use my browser (IE, Firefox, Safari)" - layout="topleft" - left_delta="0" - name="external" - value="true" - top="0" - tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." - width="480" /> - <radio_item - height="20" - label="Use built-in browser" - layout="topleft" - left="0" - name="internal" - value="" - tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." - top_delta="20" - width="480" /> - </radio_group> --> - <radio_group control_name="PreferredBrowserBehavior" follows="left|top" @@ -149,7 +117,7 @@ width="480"> <radio_item height="20" - label="Use my browser (Chrome, Firefox, IE) for all links" + label="Use the default system browser for all links" layout="topleft" left="0" name="internal" @@ -159,17 +127,17 @@ width="480" /> <radio_item height="20" - label="Use built-in browser for Second Life links only" + label="Use the built-in browser for Second Life links only" layout="topleft" left_delta="0" name="external" value="1" - tool_tip="Use the default system web browser for help, web links, etc. Builtin browser will be used only for LindenLab/SecondLife links." + tool_tip="Use the default system web browser for help, web links, etc. The built-in browser will be used only for LindenLab/Second Life links." top_delta="20" width="480" /> <radio_item height="20" - label="Use built-in browser for all links" + label="Use the built-in browser for all links" layout="topleft" left="0" name="external_all" @@ -193,22 +161,6 @@ radio_style="false" width="400" top_pad="5"/> - - <check_box - top_delta="4" - enabled="true" - follows="left|top" - height="14" - initial_value="true" - control_name="CookiesEnabled" - label="Accept cookies" - left_delta="0" - mouse_opaque="true" - name="cookies_enabled" - radio_style="false" - width="400" - top_pad="5"/> - <check_box top_delta="4" enabled="true" |